我在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函数的帮助。预先谢谢你
答案 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会自动为您签名请求,因此它们必须是您的主要选择。