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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将AWS API网关阶段指向特定的lambda函数别名?相关的知识,希望对你有一定的参考价值。

因此,根据AWS文档

您可以使用别名ARN,而不是在事件源映射中使用Amazon资源名称(ARN)作为Lambda函数。此方法意味着在升级新版本或回滚到以前的版本时,无需更新事件源映射。

我有AWS lambda函数pets,我创建了2个别名devprod指向不同版本的lambda函数。

然后在API网关中我在Integration Request中使用这个lambda函数。我有两个阶段的API,developmentproduction。我希望development API阶段指向dev Lambda别名ARN和production需要指向prod别名。

当我选择lambda函数作为Integration Type时,下拉列表显示我在创建lambda函数时先前给出的任何显示名称.enter image description here

我没有找到lambda函数的任何阶段特定配置。根据我对SO的研究,我必须按照这些步骤部署指向development别名的dev阶段

1>去Integration Request 2>选择Lambda函数并将其更改为pets:dev 3>部署到development阶段

通过在部署之前将Lambda函数更改为production,对pets:prod执行相同的步骤。

随着我们的lambda函数的增长,这将成为维护的噩梦。有没有更简单的方法呢?

答案

我找到了 https://aws.amazon.com/blogs/compute/using-api-gateway-stage-variables-to-manage-lambda-functions/

以下是我遵循的步骤

1>创建lambda函数后,为lambda函数创建2个别名。 dev指向$latest版本和prod指向您要在产品中使用的特定版本

2>然后转到API网关控制台 - >集成请求 - > Lambda函数 - >并输入pets:${stageVariables.lambdaAlias},其中pets是我的函数名称,lambdaAlias是我们必须在每个API阶段添加的阶段变量

3>将API部署到新的API阶段developmentproduction

4>在每个API阶段,分别添加值lambdaAliasdev的阶段变量prod。 stage变量值必须与lambda函数的别名匹配

enter image description here

现在我们不必为每个API部署不断更改lambda别名

以上是关于如何将AWS API网关阶段指向特定的lambda函数别名?的主要内容,如果未能解决你的问题,请参考以下文章

将特定 AWS API Gateway 阶段连接到 CloudFormation 模板中的特定 Lambda 别名

如何使用 Cloudformation 将 lambda 函数附加到现有 API 网关

带有 Cognito 的 AWS Lambda API 网关 - 如何使用 IdentityId 访问和更新 UserPool 属性?

如何使用 JSON 格式将 lambda 请求 ID 记录到 AWS CloudWatch Api 网关日志组中?

AWS Lambda 开发工作流程

AWS API Gateway 自定义域的 Cname