如何将 AWS lambda 函数变成自己的 https 端点?
How to turn an AWS lambda function into an own https endpoint?
我在 AWS 上实施了一个 lambda 函数来创建 Alexa 技能。我想在 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 函数的帮助。提前谢谢你
考虑到您在评论部分的回复,有几个选项:
1 - 您可以在 API 网关中创建 HTTPS 端点。端点将获取在 https 调用中接收到的数据并转发给 lambda,然后它将等待函数执行并转发响应。您可以在此处找到更多信息 (http://docs.aws.amazon.com/apigateway/latest/developerguide/);
2 - 您可以在您控制的服务器中提供一个 https 端点,并可以使用 aws-sdk(Java脚本、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/)。
好的,对于这个额外的回答感到抱歉,但是当我想起来的时候,我无法停止思考我是多么愚蠢。所以....
所有 AWS 服务都设计为主要用作 https 端点。 AWS 控制台、aws-cli 和所有 AWS-SDK 都只是 https 调用的代理。了解这一点后,您可以发出一个简单的 https post 请求来调用 lambda 函数。此请求的 API 文档位于此处 (https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)。
但这看起来很简单...要发出的 post 请求必须使用您的访问密钥和密钥进行签名。如果它没有签名,AWS 将不会接受它。这不是一个简单的过程(但您必须在 util 函数中只实现一次)。控制台、aws-cli 和 aws-sdk 会自动为您签署请求,因此它们必须是您的主要选择。
我在 AWS 上实施了一个 lambda 函数来创建 Alexa 技能。我想在 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 函数的帮助。提前谢谢你
考虑到您在评论部分的回复,有几个选项:
1 - 您可以在 API 网关中创建 HTTPS 端点。端点将获取在 https 调用中接收到的数据并转发给 lambda,然后它将等待函数执行并转发响应。您可以在此处找到更多信息 (http://docs.aws.amazon.com/apigateway/latest/developerguide/);
2 - 您可以在您控制的服务器中提供一个 https 端点,并可以使用 aws-sdk(Java脚本、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/)。
好的,对于这个额外的回答感到抱歉,但是当我想起来的时候,我无法停止思考我是多么愚蠢。所以....
所有 AWS 服务都设计为主要用作 https 端点。 AWS 控制台、aws-cli 和所有 AWS-SDK 都只是 https 调用的代理。了解这一点后,您可以发出一个简单的 https post 请求来调用 lambda 函数。此请求的 API 文档位于此处 (https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)。
但这看起来很简单...要发出的 post 请求必须使用您的访问密钥和密钥进行签名。如果它没有签名,AWS 将不会接受它。这不是一个简单的过程(但您必须在 util 函数中只实现一次)。控制台、aws-cli 和 aws-sdk 会自动为您签署请求,因此它们必须是您的主要选择。