如何将特定 AWS API Gateway 阶段连接到特定 AWS lambda 别名

Posted

技术标签:

【中文标题】如何将特定 AWS API Gateway 阶段连接到特定 AWS lambda 别名【英文标题】:How to connect specific AWS API Gateway stage to specific AWS lambda alias 【发布时间】:2018-10-21 15:19:01 【问题描述】:

我有 AWS Lambda 函数,我通过 REST API 调用 AWS API Gateway 来调用它。对于 Lambda 函数,我配置了两个带版本控制的别名 - QA 和 Prod。

API 网关配置了 Lambda 代理集成请求。我了解 AWS API Gateway 阶段功能并创建了两个阶段(分别为 QA 和 Prod),但我在阶段配置中看不到任何 Lambda 别名设置。

如何为 QA 阶段指定 QA Lambda 别名,为 Prod API 阶段指定 Prod Lambda 别名?

【问题讨论】:

【参考方案1】:

在 API Gateway 中的集成请求中,您可以将别名添加到 ARN 的末尾,以确保您的终端节点指向正确的别名。像这样的东西 arn:aws:lambda:region:account-id:function:function-name:alias-name

您不能告诉 API Gateway 阶段始终使用特定的 Lambda 别名并拥有多个指向不同别名的 Gateway 阶段。

每次您需要部署到网关阶段时,您都必须确保将未部署的 API Gateway 端点配置为指向正确的 Lambda 别名,然后再部署到与该环境匹配的阶段。

这很难维护,因此我建议使用无服务器框架或其他框架将您的两个不同阶段视为完全不同的资源。

有用的资源:

https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda

https://serverless.com/framework/docs/providers/aws/guide/intro/

【讨论】:

【参考方案2】:

在您的集成请求中,您将看到 Lambda 函数 - 单击它进行编辑并在其后添加 :QA 或 :Prod 并点击复选标记,我认为可以做到。

示例:myLambda:Prod

【讨论】:

但这会使舞台具体化?

以上是关于如何将特定 AWS API Gateway 阶段连接到特定 AWS lambda 别名的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AWS CloudFormation 在 AWS API Gateway 集成中指定阶段变量?

如何将无服务器代码部署到 AWS API Gateway 中的阶段

将托管在 AWS EC2 上的 Asp.net Web api 连接到 AWS API Gateway

如何将AWS API网关阶段指向特定的lambda函数别名?

尝试连接到 AWS Gateway 私有 API 时出现 UnknownHostException

将 AWS API Gateway 和私有 EC2 实例拼接在一起