AWS S3 позволяет автоматически реагировать на различные события в бакетах (нотификации) и выполнять различные действия через сервисы AWS:
- SNS (Simple Notification Service) – отправка email или SMS;
- SQS (Simple Queue Service) – для очередей сообщений;
- AWS Lambda – выполнение заранее заданного кода.
Для управления нотификациями используется конфигурационный файл, в котором описаны события, на которые необходима реакция, и получатель нотификации. По умолчанию, в бакетах не настроено какое-либо реагирование на события.
Важно: необходимо настроить соответствующие IAM-политики для бакетов и вызываемых сервисов для успешной передачи сообщений.
Для настройки уведомлений в командной строке aws используется команда aws s3api put-bucket-notification-configuration. Пример команды:
aws s3api put-bucket-notification-configuration \
--bucket amzn-s3-demo-bucket \
--notification-configuration file://notification.json
N.B. Для отключения отправки уведомлений в атрибуте –notification-configuration необходимо удалить путь до файла конфигурации.
В конфигурационном файле notification.json описан пример передачи уведомления о создании объекта в бакете (“Events”) в сервис Amazon SNS (“TopicArn”):
{
"TopicConfigurations": [
{
"TopicArn": "arn:aws:sns:us-west-2:123456789012:s3-notification-topic",
"Events": [
"s3:ObjectCreated:*"
]
}
]
}
Принцип работы аналогичен CLI.
Для настройки уведомлений необходимо внести конфигурацию в блок NotificationConfiguration.
Ниже представлен синтаксис блока для передачи уведомлений в Amazon SNS:
<NotificationConfiguration>
<TopicConfiguration>
<Id>optional-id-string</Id>
<Topic>sns-topic-arn</Topic>
<Event>event-type</Event>
<Event>event-type</Event>
...
</TopicConfiguration>
...
</NotificationConfiguration>
Для отключения отправки уведомлений данный блок необходимо оставить пустым.