Я пытаюсь связать события Amazon S3 с сервисом SQS.В целях разработки я использую localstack
образ докера, но он должен быть совместим с AWS, поэтому я думаю, что проблема должна быть где-то в коде.
Есть 3 подключенных сервиса:
$bucket = $this->s3Client->createBucket(['Bucket' => 'my-bucket']);
$topic = $this->snsClient->createTopic(['Name' => 'my-topic']);
$queue = $this->sqsClient->createQueue(['QueueName' => 'my-queue']);
Затем я подписываю очередь SQS на тему SNS:
$this->snsClient->subscribe(['TopicArn' => $topic['TopicArn'], 'Protocol' => 'sqs', 'Endpoint' => $sqsArn]);
И, наконец, я пытаюсь настроить S3 bucket для отправки уведомлений о событиях:
$this->s3Client->putBucketNotification([
'Bucket' => 'my-bucket', // REQUIRED
'NotificationConfiguration' => [ // REQUIRED
'TopicConfigurations' => [
'Events' => [
's3:ObjectCreated:*',
's3:ObjectRemoved:*',
],
'Id' => 'topic-id',
'TopicArn' => $topic['TopicArn'],
'QueueArn' => $sqsArn,
],
"QueueConfigurations" =>[
"Id" => "S3EventsSQSNotification",
"QueueArn" => $sqsArn,
'Events' => [
's3:ObjectCreated:*',
's3:ObjectRemoved:*',
],
]
],
]);
Ответ на этот запрос возвращает статус200, но похоже, что ничего не изменилось в конфигурации.Когда я вызываю get
ответ на запрос является пустым, как и при вводе URL-адреса конфигурации (я предполагаю, что изменения должны быть видны здесь) http://127.0.0.1:4572/my-bucket?notification
<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"></NotificationConfiguration>
Когда я пытаюсь опубликовать пользовательское сообщение, оно работаетнормально, так что проблема с подключением S3 (и отсутствующей конфигурацией)