AWS - 从 lambda 名称获取 API-Gateway apiID
AWS - getting API-Gateway apiID from lambda name
我有一个 lambda 应该从 public URL 调用(通过 API-网关 - 不需要授权)
我知道我可以通过调用 awsSdk.apiGateway.getApi(apiId)
获取 public URL
所以我需要从某个地方获取 apiId
。我听说可以通过 lambda-name
获取 api-id
,但我在文档中找不到它。
真的可以吗?另一种方法是在我的应用程序配置中保留 api-id
(而不是 lambda-name
)
如果您的 lambda 与代理集成一起使用,您可以按照此 page
中的说明检索输入数据中的 ID
"requestContext": {
...
"apiId": "gy415nuibc"
},
仅通过使用 lambda 名称,您无法获得 apiId
。也许您听到的是在 lambda 中您可以获得 apiId
然后 return 它给调用者。这是有道理的,因为 apiId
是 event object 的一部分,API 网关随每个请求传递给 lambda 函数。
要仅从 lambda 名称获取 apiId
,您必须为此开发自己的自定义解决方案。这仍然会有问题,因为单个 lambda 可以与多个 API 相关联,因此您可能也必须考虑到这一点。
开发此类解决方案的最简单方法是 存储 API 及其 lambda 函数之间的关联 ,例如DynamoDB table,并在需要时查询 table 以仅基于 lambda 名称获取 apiId
。
我有一个 lambda 应该从 public URL 调用(通过 API-网关 - 不需要授权)
我知道我可以通过调用 awsSdk.apiGateway.getApi(apiId)
所以我需要从某个地方获取 apiId
。我听说可以通过 lambda-name
获取 api-id
,但我在文档中找不到它。
真的可以吗?另一种方法是在我的应用程序配置中保留 api-id
(而不是 lambda-name
)
如果您的 lambda 与代理集成一起使用,您可以按照此 page
中的说明检索输入数据中的 ID"requestContext": {
...
"apiId": "gy415nuibc"
},
仅通过使用 lambda 名称,您无法获得 apiId
。也许您听到的是在 lambda 中您可以获得 apiId
然后 return 它给调用者。这是有道理的,因为 apiId
是 event object 的一部分,API 网关随每个请求传递给 lambda 函数。
要仅从 lambda 名称获取 apiId
,您必须为此开发自己的自定义解决方案。这仍然会有问题,因为单个 lambda 可以与多个 API 相关联,因此您可能也必须考虑到这一点。
开发此类解决方案的最简单方法是 存储 API 及其 lambda 函数之间的关联 ,例如DynamoDB table,并在需要时查询 table 以仅基于 lambda 名称获取 apiId
。