【问题标题】:S3 notification configuration is ambiguously defined?S3 通知配置定义不明确?
【发布时间】:2021-01-04 15:20:11
【问题描述】:

我正在尝试使用 Terraform 将两个 AWS lambda 函数连接到 S3 事件。

我的配置如下:

resource "aws_s3_bucket_notification" "collection_write" {
  bucket = aws_s3_bucket.fruit.id

  lambda_function {
    lambda_function_arn = aws_lambda_function.apple.arn
    events              = [ "s3:ObjectCreated:*" ]
    filter_prefix       = "foo/"
  }

  lambda_function {
    lambda_function_arn = aws_lambda_function.banana.arn
    events              = [ "s3:ObjectCreated:*" ]
    filter_prefix       = "foo/"
  }
}

但是 AWS / Terraform 不喜欢这样:

Error: Error putting S3 notification configuration: InvalidArgument: Configuration is ambiguously defined. Cannot have overlapping suffixes in two rules if the prefixes are overlapping for the same event type.
    status code: 400

我应该如何在 Terraform 中编写这个?

【问题讨论】:

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


    【解决方案1】:

    您的 terraform 没有错,只是 s3 仅限于单个事件通知。最好将 s3 事件发送到 SNS 主题,然后触发 lambda 以实现相同的功能。

    【讨论】:

    • 这令人沮丧。感觉这个限制是为了鼓励你使用更多的 AWS 服务!
    【解决方案2】:

    您还可以通过 AWS SQS 实现触发多个 Lambda 函数。对于此类用例,AWS SQS 功能强大且易于使用消息队列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-14
      • 2019-11-02
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多