将S3存储桶通知发布到SQS

时间:2015-03-19 01:50:31

标签: amazon-web-services amazon-s3

我正在尝试设置我的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文档:

  • 我查看了AWS::S3::Bucket文档以查看外部语法。我看到了我需要设置的NotificationConfiguration
  • 但是Notification Configuration只能包含TopicConfigurations列表,在支持QueueConfiguration之前是JDK中的旧构造函数

我尝试过这样的事情:

"NotificationConfiguration" :{
    "QueueConfiguration": {
        "Id": "DropshipInboundEventNotification",
        "Event": "s3:ObjectCreated:Put",
        "Queue": "arn:aws:sqs:*:*:Dropship-Inbound-qa"
    }
},

但是这正如预期的那样引发了一个错误:&#34;遇到了不受支持的属性QueueConfiguration&#34;来自亚马逊。

看着这个API documentation

我想知道是否有人能够使用CloudFormation模板执行此操作,因为我如何维护所有其他AWS资源,并且不希望对此特定功能执行任何特殊操作。

感谢任何帮助。

1 个答案:

答案 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标签)。

关于它的其他文件:

S3BucketDocs

NotificationConfigurationDocs