放置 S3 通知配置错误时出错



我在尝试创建 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/"
}
}

如果您尚未执行此操作,则需要在主题上指定一个策略,该策略授予对 S3 的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
}

希望有帮助。

好吧,我知道这不是您的确切情况,但是我遇到了同样的错误,并且我无法在这里找到答案,并且因为这篇文章是Google给我的第一篇文章,我将在这里留下我的问题的答案,希望它能帮助其他人。

所以,我注意到在 Terraform 应用后,我遇到了这个错误,我去了 UI 看看发生了什么,发现了这条消息:

Lambda 控制台无法验证此触发器的一个或多个事件源。最常见的原因是源 ARN 包含通配符 (*( 字符。您可以使用 AWS CLI 或 AWS 开发工具包管理未经验证的触发器。

你猜怎么着?我真的在 ARN 中有一个通配符 (*(,如下所示:

source_arn = "{aws_s3_bucket.bucket.arn}/*"

所以我把它改成:

source_arn = aws_s3_bucket.bucket.arn

它奏效了。因此,如果您阅读本文 - 您的情况中可能存在相同的错误。

向 Terraform 使用的帐户添加以下权限可解决此问题:

s3:获取存储桶通知

s3:放置桶通知

相关内容

最新更新