sdgfsdh
sdgfsdh

Reputation: 37025

S3 notification configuration is ambiguously defined?

I am trying to use Terraform to connect two AWS lambda functions to an S3 event.

My configuration looks like this:

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/"
  }
}

But AWS / Terraform doesn't like this:

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

How should I write this in Terraform?

Upvotes: 0

Views: 513

Answers (2)

Irshad
Irshad

Reputation: 67

You can also achieve triggering multiple Lambda functions via AWS SQS. AWS SQS is powerful and easy to use Messaging queue for such use cases.

Upvotes: -1

David Webster
David Webster

Reputation: 2321

your terraform is not wrong it is just that s3 is limited to a single event notification. It is better to have the s3 event sent to an SNS topic which then triggers the lambdas to achieve the same functionality.

Upvotes: 4

Related Questions