【问题标题】:How to set up a lambda alias with the same event source mapping as the LATEST/Unqualified lambda function in terraform如何使用与 terraform 中最新/不合格 lambda 函数相同的事件源映射设置 lambda 别名
【发布时间】:2019-10-02 01:28:08
【问题描述】:

我正在尝试使用 terraform 为我的 lambda 函数创建一个 lambda 别名。我已经能够成功创建别名,但创建的别名缺少 dynamodb 作为触发器。

如何设置事件源

resource "aws_lambda_event_source_mapping" "db_stream_trigger" {
    batch_size = 10
    event_source_arn = "${data.terraform_remote_state.testddb.table_stream_arn}"
    enabled = true
    function_name = "${aws_lambda_function.test_lambda.arn}"
    starting_position = "LATEST"
}

别名是如何创建的

resource "aws_lambda_alias" "test_lambda_alias" {
  count = "${var.create_alias ? 1 : 0}"
  depends_on       = [ "aws_lambda_function.test_lambda" ]
  name             = "test_alias"
  description      = "alias for my test lambda"
  function_name    = "${aws_lambda_function.test_lambda.arn}"
  function_version = "${var.current_running_version}"
  routing_config = {
    additional_version_weights = "${map(
        "${aws_lambda_function.test_lambda.version}", "0.5"
    )}"
  }
}

lambda 使用 dynamodb 流作为触发器 已成功创建 lambda 的别名。 Alias 使用的是正确的版本 Alias 使用了正确的权重 Alias 没有使用 dynamo-db 流作为事件源

【问题讨论】:

    标签: amazon-web-services aws-lambda alias terraform amazon-dynamodb-streams


    【解决方案1】:

    资源“aws_lambda_event_source_mapping”的函数名称有误。我为它提供了 ma​​in lambda 函数的 arn,与 alias lambda 函数的 arn 相对。一旦我将它切换到别名的 arn,我就能够根据权重成功地将流量从流中划分出来!

    来自 aws 文档:

    简化事件源映射的管理 – 您可以使用别名 ARN,而不是在事件源映射中使用 Lambda 函数的 Amazon 资源名称 (ARN)。这种方法意味着您在升级新版本或回滚到以前的版本时不需要更新事件源映射。 https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html

    【讨论】:

      猜你喜欢
      • 2016-06-24
      • 2021-03-21
      • 2019-12-26
      • 2020-01-12
      • 1970-01-01
      • 2019-03-10
      • 2015-09-21
      • 1970-01-01
      相关资源
      最近更新 更多