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

LP1*_*P13 4 amazon-ec2 amazon-web-services aws-lambda aws-api-gateway

因此,根据AWS文档

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

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

然后在API Gateway中,我在中使用此lambda函数Integration Request。我有两个阶段的API developmentproduction。我希望developmentAPI阶段指向devLambda别名ARN,并且production需要指向prod别名。

当我选择lambda函数时,Integration Type下拉列表会显示我在创建lambda函数时给定的任何显示名称。在此处输入图片说明

我找不到lambda函数的任何特定于阶段的配置。根据对SO的研究,我必须遵循以下步骤来部署development指向dev别名的阶段

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

production将Lambda函数更改为pets:prod部署之前,请遵循相同的步骤。

随着lambda函数的增长,这将成为维护的噩梦。有没有更简单的方法可以做到这一点?

LP1*_*P13 8

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

这是我遵循的步骤:

  1. 创建lambda函数后,为lambda函数创建2个别名。dev指向$latest版本并prod指向要在产品中使用的特定版本
  2. 然后转到API Gateway控制台->集成请求-> Lambda函数,并输入 pets:${stageVariables.lambdaAlias}where pets是我的函数名,lambdaAlias是我们在每个API阶段都必须添加的阶段变量。
  3. 您的API部署到新的API阶段developmentproduction
  4. 在每个API阶段中,分别添加lambdaAlias带有value dev和的阶段变量prod。阶段变量值必须与lambda函数的别名匹配

在此处输入图片说明

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

  • 我找不到通过 UI 执行此操作的方法,但通过将变量放在您期望的位置,它可以与 aws cli 很好地配合。--这样做也展示了使用 UI 的正确方法。您需要手动指定完整的 ARN,不能只选择 lambda 函数名称,然后附加“${stagingVariables.lambdaAlias}”。 (2认同)