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 它给调用者。这是有道理的,因为 apiIdevent object 的一部分,API 网关随每个请求传递给 lambda 函数。

要仅从 lambda 名称获取 apiId,您必须为此开发自己的自定义解决方案。这仍然会有问题,因为单个 lambda 可以与多个 API 相关联,因此您可能也必须考虑到这一点。

开发此类解决方案的最简单方法是 存储 API 及其 lambda 函数之间的关联 ,例如DynamoDB table,并在需要时查询 table 以仅基于 lambda 名称获取 apiId