如何将AWS Lambda函数转换为自己的https终端节点?

时间:2018-08-15 11:38:19

标签: node.js express aws-lambda alexa-skills-kit

我在AWS上实现了一个lambda函数来创建Alexa Skill。我想在另一个带有node.js的服务器上使用https端点。我不知道如何接近这样的端口。

这是我的aws lambda函数的示例代码:

const skillBuilder = Alexa.SkillBuilders.custom();

exports.handler = skillBuilder
  .addRequestHandlers(
    LaunchRequestHandler,
    MyIntentHandler,
    TestIntentHandler,
    HelpIntentHandler,
    CancelAndStopIntentHandler,
    SessionEndedRequestHandler
  )
  .addErrorHandlers(ErrorHandler)
  .lambda();

,例如,其中一个处理程序:

const LaunchRequestHandler = {
  canHandle(handlerInput) {
    return handlerInput.requestEnvelope.request.type === 'LaunchRequest';
  },
  handle(handlerInput) {
    const speechText = 'Hello';
    return handlerInput.responseBuilder
      .speak(speechText)
      .reprompt(speechText)
      .withSimpleCard('Welcome', speechText)
      .getResponse();
  },
};

我需要有关node.js应用程序以及如何翻译此lambda函数的帮助。预先谢谢你

2 个答案:

答案 0 :(得分:2)

考虑到您在评论部分的回答,有几种选择:

1-您可以在API网关中创建HTTPS端点。端点将获取在https调用中接收的数据并转发给lambda,然后它将等待函数执行并转发响应。您可以在此处找到更多信息(http://docs.aws.amazon.com/apigateway/latest/developerguide/);

2-您可以在自己控制的服务器中提供https端点,并且可以使用aws-sdk(Javascript,Java,Python等)来调用lambda函数。就像在EC2中运行的http服务一样。您可以在此处找到有关node.js(https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/lambda-examples.html);

的更多信息。

3-现在,您可以调用SQS队列并将其配置为触发lambda执行。使用AWS Kinesis可以使用相同的解决方案。 SQS队列将消息作为https呼叫接收。但是此解决方案可能需要第三方为原始呼叫者发送响应。您可以在这里(http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/)上找到有关此选项的更多信息。

答案 1 :(得分:0)

好吧,对于这个额外的答案很抱歉,但是当我想起我的时候,我一直不停地想着自己是多么的傻瓜。所以...

所有AWS服务均设计为主要用作https终端节点。 AWS控制台,aws-cli和所有AWS-SDK只是https调用的代理。知道了这一点,您可以发出一个简单的https post请求来调用lambda函数。此请求的API文档在这里(https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)。

但这看起来很简单...要发出的发布请求必须使用您的访问权限和秘密密钥签名。如果未签名,AWS将不接受它。这不是一个简单的过程(但是您只能在util函数中一次实现它)。控制台aws-cli和aws-sdk会自动为您签名请求,因此它们必须是您的主要选择。