【问题标题】:How to point AWS API gateway stage to specific lambda function alias?如何将 AWS API 网关阶段指向特定的 lambda 函数别名?
【发布时间】:2019-05-29 09:03:04
【问题描述】:

因此根据 AWS 文档

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

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

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

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

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

1> 转到Integration Request
2> 选择Lambda函数,改成pets:dev
3> 部署到development 阶段

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

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

【问题讨论】:

  • 您是否在使用 Cloudformation 或 terraform 等 IaC 工具?如果是这样,我认为如果你有一个统一的命名约定,这不会是一个巨大的痛苦。
  • 我正在使用 AWS 控制台。不确定你提到的工具,但我会调查一下
  • 通常 terraform 是管理您自己的基础架构的更好选择。如果您的基础架构需要部署到与您帐户不同的 aws 帐户,那么 cloudformation 会更好。
  • IaC 是否允许您在 API 阶段和 Lambda 别名之间进行一对一的映射?
  • 你看过serverless吗?

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


【解决方案1】:

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

以下是我遵循的步骤:

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

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

【讨论】:

  • 他们的 UI 的最新版本不允许在集成函数名称中输入阶段变量。有谁知道现在应该如何工作?
  • 我找不到通过 UI 执行此操作的方法,但通过将变量放置在您期望的位置,它可以很好地与 aws cli 配合使用。 ——这样做也显示了使用 UI 的正确方法。您需要手动指定完整的 ARN,不能只选择 lambda 函数名称,然后附加 ${stagingVariables.lambdaAlias}
猜你喜欢
  • 2018-10-21
  • 2018-10-29
  • 2023-01-24
  • 2017-10-27
  • 2021-10-24
  • 2020-12-08
  • 2016-05-30
  • 2020-04-16
  • 2021-06-01
相关资源
最近更新 更多