Terraform s3事件通知错误

时间:2017-07-10 04:14:42

标签: amazon-s3 amazon-sns terraform

我在尝试创建s3事件通知时遇到问题。有谁知道对此的决议?

错误是:

*Error applying plan:
1 error(s) occurred:
* module.Test-S3-Bucket.aws_s3_bucket_notification.s3-notification: 1 error(s) occurred:
* aws_s3_bucket_notification.s3-notification: Error putting S3 notification configuration: InvalidArgument: Unable to validate the following destination configurations
status code: 400, request id: AD9B5BF2FF84A6CB, host id: ShUVJ+TdkpqAZfpeDM3grkF9Vue3Q/AF0LydchperKTF6XdQyDM6BisZi/38pGAh/ZqS+gNyrSM=*

以下是给我错误的代码:

resource "aws_s3_bucket" "s3-bucket" {
  bucket = "${var.bucket_name}"
  acl    = ""

  lifecycle_rule {
    enabled = true
    prefix  = ""

    expiration {
      days = 45
    }
  }

  tags {
    CostC = "${var.tag}"
  }
}


resource "aws_s3_bucket_notification" "s3-notification" {

  bucket = "${var.bucket_name}"

  topic {
    topic_arn     = "arn:aws:sns:us-east-1:1223445555:Test"
    events        = [ "s3:ObjectCreated:*", "s3:ObjectRemoved:*" ]
    filter_prefix = "test1/"
  }
}

1 个答案:

答案 0 :(得分:2)

如果您尚未执行此操作,则需要为主题指定一个策略,该策略授予对{的SNS:Publish权限(仅限Condition属性中指定的存储区) - 如果您也正在通过Terraform提供这个主题,那么这样的事情就应该这样做(我们知道,因为它也在几天前就把我们赶出去了!):

resource "aws_sns_topic" "my-sns-topic" {
    name = "Test"
    policy = <<POLICY
{
    "Version":"2012-10-17",
    "Statement":[{
        "Effect": "Allow",
        "Principal": {
            "Service": "s3.amazonaws.com"
            },
        "Action": "SNS:Publish",
        "Resource": "arn:aws:sns:us-east-1:1223445555:Test",
        "Condition":{
            "ArnLike":{"aws:SourceArn":"${aws_s3_bucket.s3-bucket.arn}"}
        }
    }]
}
POLICY
}

希望有所帮助。