【问题标题】:Pointing API Gateway to specific version of a function or an alias将 API Gateway 指向特定版本的函数或别名
【发布时间】:2021-06-01 00:45:47
【问题描述】:

我已经使用 terraform 创建了一个 Lambda 函数,如下所示:


module "my-lambda" {
  source  = "terraform-aws-modules/lambda/aws"
  version = "~> v1.31.0"

  function_name         = "${var.environment_name}-${local.lambda_name}"
...
  publish               = true
}

#...
module "alias" {
  source           = "terraform-aws-modules/lambda/aws//modules/alias"
  name             = "${var.lambda_name}-latest"
  function_name    = module.my-lambda.this_lambda_function_name
  function_version = module.my-lambda.this_lambda_function_version
}

所以目前我有一个带有数字的已发布 Lambda 版本,我还添加了一个别名,以及 $LATEST 版本。我需要发布版本的原因是 Provisioned Concurrency 只能附加到发布版本。

我的 API 网关集成如下所示:

module "api_gateway" {
  source  = "terraform-aws-modules/apigateway-v2/aws"
  version = "~> 0.9.0"

  name          = "${var.environment_name}-my-api"
  # ...Abriged...
  integrations = {
    "GET /mymethod" = {
      integration_type        = "AWS_PROXY"
      integration_http_method = "POST"
      payload_format_version  = "2.0"
      lambda_arn              = module.my-lambda.this_lambda_function_invoke_arn
    }
}

但是在控制台中我可以看到它正在触发$LATEST 版本,而不是已发布的版本。如何更改配置以便 API Gateway 集成触发特定版本(或别名)?

【问题讨论】:

    标签: amazon-web-services aws-lambda terraform terraform-provider-aws


    【解决方案1】:

    我不熟悉 terraform,但要从 api 网关调用别名,您需要在 API 网关集成中具有 lambda 别名 arn。

    您正在从 lambda 模块获取 lambda arn,但您需要 arn 的别名。

    lambda_arn = module.my-lambda.this_lambda_function_invoke_arn

    别名 arn 只不过是 <Lambda ARN>:<AliasName>

    因此,您尝试从 module.alias 中获取 arn,或者在集成中使用 : 附加别名和 lambda arn。

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 2019-05-29
      • 2019-10-09
      • 2023-03-21
      • 2018-10-21
      • 2016-05-30
      • 2018-10-29
      • 2019-12-18
      • 2011-12-17
      相关资源
      最近更新 更多