gpt4 book ai didi

amazon-web-services - 将无服务器 API 网关 URL 作为参数传递给同一堆栈中的 Lambda 函数

转载 作者:行者123 更新时间:2023-12-04 23:39:36 25 4
gpt4 key购买 nike

我开始使用 AWS Lambda、AWS API Gateway 和无服务器以及其他供应商 API 构建 JAM 应用程序。

此供应商 API 由 Lambda 函数调用,并需要传递回调 URL 以在完成其工作后接收一些数据。

当我使用无服务器生成所有内容时,转到控制台并提取 API URL 以手动设置是因为 env 变量对我没有用,我需要一种方法使无服务器可以将公开的 API 端点 URL 传递给 lambda 函数。

如何将 Lambda 函数 HTTP 事件 URI 作为 env 或可传递给同一堆栈中的另一个 Lambda 函数的内容获取?

有人可以提供一些关于如何实现这一点的无服务器代码片段吗?
谢谢!

最佳答案

如果要查找触发 Lambda 函数的 API 网关 URL,则需要查看 event您的 Lambda 函数接收的变量。

event.headers.Host -> abcdefghij.execute-api.us-east-1.amazonaws.com
event.requestContext.stage -> dev
event.requestContext.resourcePath -> my-service/resource

如果要构建 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}`;

完整的测试示例:
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);
};

备注 :如果您直接在 AWS Lambda 控制台中进行测试,它可能会抛出错误,因为 event对象将为空且没有 headersrequestContext特性。因此,请使用 API Gateway 控制台或直接浏览 URL 来尝试此操作。

关于amazon-web-services - 将无服务器 API 网关 URL 作为参数传递给同一堆栈中的 Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41974569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com