События уровня объекта S3 не запускаются

Я создал правило события в мосте событий aws с шаблоном события:

{
  "source": [
    "aws.s3"
  ]
}

Цель — это группа журналов CloudWatch. Теперь, когда я что-то меняю на уровне ведра, например. права доступа к корзине, то я вижу событие, захваченное в облачных часах, но когда я добавляю/удаляю файл в корзину s3, ничего не происходит. Что здесь не так?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
2 643
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Чтобы регистрировать события на уровне объектов, необходимо включить регистрацию событий данных для S3 в следе CloudTrail. Если у вас еще нет следа, вам нужно создать его, убедившись, что вы включили регистрацию событий данных для s3.

Сообщение в блоге , анонсирующее эту функцию, вводит в заблуждение, требование активировать события данных нигде не упоминается :-\

Remi D 06.04.2022 18:41

Вы можете отправлять события уровня объекта в Event Bridge из S3, перехватив эти события объекта и убедившись, что у вас включены уведомления S3 от S3 до Event Bridge на уровне корзины, или вы можете зафиксировать эти события с помощью ведения журнала CloudTrail API. Если вы хотите зафиксировать события для нескольких сегментов, то первый способ проще. Однако если вы хотите фиксировать события во всех или во многих корзинах, я предлагаю использовать метод CloudTrail.

Отправка событий объекта непосредственно в Event Bridge

Чтобы отправлять события уровня объекта в Event Bridge из S3, убедитесь, что вы включили уведомления в Event Bridge в свойствах корзины:

Если вы используете CloudFormation, это доступно через свойство NotificationConfiguration.

Затем вы можете создать правило Event Bridge, которое будет фиксировать действия для этого сегмента. Это пример захвата создания объекта:

{
  "detail-type": ["Object Created"],
  "source": ["aws.s3"],
  "detail": {
    "bucket": {
      "name": ["my-bucket"]
    }
  }
}

Отправка событий объекта в Event Bridge через CloudTrail

Для захвата событий S3 для нескольких сегментов предпочтительнее использовать метод CloudTrail API. Как отмечено в ответе @Marcin, вы должны создать след CloudTrail, который фиксирует события данных S3. При создании следа в разделе «Выбор событий журнала» проще всего переключиться на «Основные селекторы событий», чтобы выбрать отдельные сегменты или события во всех сегментах. Создав отслеживание, вы можете создать правило Event Bridge для захвата событий Cloudtrail API. Вот пример захвата создания объекта:

{
  "detail-type": ["AWS API Call via CloudTrail"],
  "source": ["aws.s3"],
  "detail": {
    "eventSource": ["s3.amazonaws.com"],
    "eventName": ["PutObject"]
  }
}

Если вы хотите ограничить этот вызов определенными сегментами, вы можете дополнительно настроить правило:

{
  "detail-type": ["AWS API Call via CloudTrail"],
  "source": ["aws.s3"],
  "detail": {
    "eventSource": ["s3.amazonaws.com"],
    "requestParameters": {
      "bucketName": ["my-bucket"]
    },
    "eventName": ["PutObject"]
  }
}

Другие вопросы по теме