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