我正在尝试设置我的S3以通知我的SQS队列" PUT"对象创建事件。
我可以通过以下方式实现此目的:
aws --profile QA s3api put-bucket-notification --bucket <BUCKET_NAME> --notification-configuration '{ "QueueConfiguration": { "Id": "<EVENT ID>", "Event": "s3:ObjectCreated:Put", "Queue": "<QUEUE ARN>" } }'
也可以使用Java做同样的事情:
NotificationConfiguration notificationConfiguration = new QueueConfiguration(queueArn, EnumSet.of(S3Event.ObjectCreatedByPut));
BucketNotificationConfiguration bucketNotificationConfiguration = new BucketNotificationConfiguration("DropShipInboundQueueDelivery", notificationConfiguration);
client.setBucketNotificationConfiguration(bucketName, bucketNotificationConfiguration)
然而,当我尝试使用CloudFormation模板进行类似的操作时,我找不到任何触发SQS通知的方法。我看到的唯一可行的工作方式是记录SNS。
我已经提到了Cloud Formation文档:
我尝试过这样的事情:
"NotificationConfiguration" :{
"QueueConfiguration": {
"Id": "DropshipInboundEventNotification",
"Event": "s3:ObjectCreated:Put",
"Queue": "arn:aws:sqs:*:*:Dropship-Inbound-qa"
}
},
但是这正如预期的那样引发了一个错误:&#34;遇到了不受支持的属性QueueConfiguration&#34;来自亚马逊。
我想知道是否有人能够使用CloudFormation模板执行此操作,因为我如何维护所有其他AWS资源,并且不希望对此特定功能执行任何特殊操作。
感谢任何帮助。
答案 0 :(得分:0)
Cloudformation模板中没有“Id”(你可以从QueueConfiguration Doc查看)和你的第二个错误,那就是“QueueConfiguration”,它是“QueueConfigurations”。因此,您会收到错误消息“遇到不受支持的属性QueueConfiguration”
一定是这样的。
"S3Bucket":{
"Type" : "AWS::S3::Bucket",
"Properties" : {
"AccessControl" : String,
"BucketName" : String,
"CorsConfiguration" : CORS Configuration,
"LifecycleConfiguration" : Lifecycle Configuration,
"LoggingConfiguration" : Logging Configuration,
"NotificationConfiguration" :
{ "QueueConfigurations" : [ {
"Event" : "s3:ObjectCreated:Put",
"Queue" : "arn:YOURQUEUEARN"
} ] },
"Tags" : [ Resource Tag, ... ],
"VersioningConfiguration" : Versioning Configuration,
"WebsiteConfiguration" : Website Configuration Type
}
}
在阅读云信息模板文档时,必须注意“必需:”部分。如果不需要,则无需填写,只需在模板中删除该行(如S3标签)。
关于它的其他文件: