DLe*_*rdi 4 amazon-web-services aws-lambda aws-api-gateway serverless-framework
我开始使用AWS Lambda,AWS API Gateway和无服务器以及其他供应商API构建JAM应用程序.
此供应商API由Lambda函数调用,并且需要传递回调URL以在完成其工作后接收某些数据.
当我用无服务器生成所有内容时,转到控制台并提取API URL以手动设置作为env变量对我没用,我需要一种方法,以便无服务器可以将公开的API端点URL传递给lambda函数.
如何将Lambda函数HTTP事件URI作为env或可传递给同一堆栈中的另一个Lambda函数的东西?
有人可以提供一些无服务器片段如何实现这一目标?谢谢!
如果要查找触发Lambda函数的API网关URL,则需要检查eventLambda函数接收的变量.
event.headers.Host -> abcdefghij.execute-api.us-east-1.amazonaws.com
event.requestContext.stage -> dev
event.requestContext.resourcePath -> my-service/resource
Run Code Online (Sandbox Code Playgroud)
如果要构建API网关URL(例如:https://abcdefghij.execute-api.us-east-1.amazonaws.com/dev/my-service/resource),请使用:
const url = `https://${event.headers.Host}/${event.requestContext.stage}/${event.requestContext.resourcePath}`;
Run Code Online (Sandbox Code Playgroud)
完整的测试示例:
module.exports.hello = (event, context, callback) => {
const url = `https://${event.headers.Host}/${event.requestContext.stage}/${event.requestContext.resourcePath}`;
const response = {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': '*'
},
body: JSON.stringify({
message: url
})
};
callback(null, response);
};
Run Code Online (Sandbox Code Playgroud)
注意:如果您直接在AWS Lambda控制台中对此进行测试,则可能会抛出错误,因为该event对象将为空且没有headers和requestContext属性.因此,请尝试使用API网关控制台或直接浏览URL.
| 归档时间: |
|
| 查看次数: |
728 次 |
| 最近记录: |