2015-03-19 3 views
3

Я пытаюсь настроить свой S3, чтобы уведомить мою очередь SQS о событии создания объекта «PUT».Публикация сообщения S3 Bucket на SQS

Я могу добиться этого с помощью CLI по:

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:

  • Я смотрел на AWS::S3::Bucket документы, чтобы посмотреть на внешнем синтаксисом. Я видел NotificationConfiguration, которые мне нужно установить
  • Однако Notification Configuration может содержать только список TopicConfigurations с был старый конструктор в JDK, прежде чем QueueConfiguration поддержали

Я пытался делать что-то вроде этого:

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

Но это, как ожидалось, забросило ошибку: «Обнаружено неподдерживаемое свойство QueueConfiguration» от amazon.

Посмотрел на это API documentation

Я хотел бы знать, если кто-то был в состоянии сделать это, используя шаблоны CloudFormation, как тот, как я поддерживаю все остальные ресурсы AWS и не хотят делать ничего особенного для этого конкретного особенность.

Любая помощь приветствуется.

+0

Я не пробовал этой характеристике себя, но я нашел CloudFormation в целом отстает от API порядка месяцев. Если какое-то время было какое-то изменение относительно того, как это работает, скорее всего, он еще не перешел на CF ... еще? – DanielM

ответ

0

Нет необходимости в «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).

Другие Docs об этом:

S3BucketDocs

NotificationConfigurationDocs

+0

Kerim, спасибо за обновление. Я заметил, что это было добавлено всего несколько дней назад. Любой, кто работает над одной и той же проблемой, должен иметь возможность использовать это решение. –