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

时间:2019-01-02 17:59:00

标签: amazon-web-services amazon-ec2 aws-lambda aws-api-gateway

因此,根据AWS文档

  

不是在Amazon Lambda函数中使用Amazon资源名称(ARN)   事件源映射,可以使用别名ARN。这种方法意味着   您不需要在更新事件源映射时   推广新版本或回滚到以前的版本。

我有AWS Lambda函数pets,并且创建了两个别名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函数的增长,这将成为维护的噩梦。有没有更简单的方法?

1 个答案:

答案 0 :(得分:3)

我找到了
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。阶段变量值必须与lambda函数的别名匹配

enter image description here

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