AWS вызывает локальную конечную точку Lambda с помощью Node.js SDK

#javascript #node.js #amazon-web-services #aws-lambda #serverless-application-model

#javascript #node.js #amazon-веб-сервисы #aws-lambda #бессерверная модель приложения

Вопрос:

в документации SAM показана возможность развертывания собственной конечной точки lambda и вызова ее с помощью Python SDK.

Вам просто нужно запустить локальную конечную точку lambda с sam local start-lambda помощью, а затем продолжить

 # USING AWS SDK
 -------------
 #You can also use the AWS SDK in your automated tests to invoke your functions programatically.
 #Here is a Python example:

     self.lambda_client = boto3.client('lambda',
                                  endpoint_url="http://127.0.0.1:3001",
                                  use_ssl=False,
                                  verify=False,
                                 config=Config(signature_version=UNSIGNED,
                                               read_timeout=0,
                                                retries={'max_attempts': 0}))
    self.lambda_client.invoke(FunctionName="HelloWorldFunction")
  

Теперь у меня вопрос: как я могу сделать то же самое с Javascript SDK? Я всегда получаю разные ошибки об отсутствующих регионах, не найденных хостах и неподдерживаемых параметрах.
У вас есть решение для меня?

Комментарии:

1. Вместо того, чтобы говорить «я получаю эти ошибки при попытке», покажите фактический код и фактическое сообщение об ошибке, чтобы мы могли помочь. Мы здесь, чтобы помочь с проблемами, мы здесь не для того, чтобы предоставлять бесплатную услугу преобразования кода.

2. Да, я знаю, вчера я немного спешил. Обычно я предоставляю достаточно кода, чтобы лучше понять мои проблемы. Я обещаю улучшение.

Ответ №1:

AWS JavaScript SDK требует регион и учетные данные для выполнения запросов. Но для локальных конечных точек вы можете использовать произвольные значения.

Следующий пример работает для меня:

 const AWS = require('aws-sdk');

const lambda = new AWS.Lambda({
  apiVersion: '2015-03-31',
  endpoint: 'http://127.0.0.1:3001',
  sslEnabled: false,
  region: 'us-east-1',
  accessKeyId: 'any',
  secretAccessKey: 'any'
});

lambda.invoke({
  FunctionName: 'HelloWorldFunction'
}, (err, res) => {
  console.log(res);
});
  

Комментарии:

1. Большое вам спасибо. Мой код выглядел почти так же, но что-то просто не сработало.