Почему загрузка файла S3 не вызывает событие в SNS topi c? - PullRequest
0 голосов
/ 24 февраля 2020

Я хочу, чтобы определенная служба HTTPS вызывалась каждый раз, когда файл был загружен в корзину S3.

Я создал корзину S3 и SNS topi c с подтвержденной подпиской по HTTPS. Служба в качестве конечной точки. Я могу опубликовать sh сообщение на SNS topi c через пользовательский интерфейс AWS и увидеть, что служба HTTPS вызывается, как и ожидалось. На корзине S3 я создал Событие, которое должно связать корзину и топи c. При первой попытке я получил ошибку, потому что корзине не было разрешено записать в topi c, поэтому c .f. В документации я изменил политику доступа topi c на:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:eu-central-1:TOPIC_ID:OrderUpdates",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "ACCOUNT_ID"
        },
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:s3:*:*:*"
        }
      }
    }
  ]
}

, где TOPIC_ID - идентификатор владельца topi c, который можно увидеть, когда topi c отображается в AWS Пользовательский интерфейс, а ACCOUNT_ID - это идентификатор учетной записи, отображаемый в настройках учетной записи в пользовательском интерфейсе AWS. Это изменение в политике доступа topi c позволило мне создать событие в корзине: enter image description here

Когда я вызываю метод API getBucketNotificationConfiguration, я получаю:

{
    "TopicConfigurations": [
        {
            "Id": "OrderFulfilled",
            "TopicArn": "arn:aws:sns:eu-central-1:TOPIC_ID:OrderUpdates",
            "Events": [
                "s3:ObjectCreated:*"
            ]
        }
    ],
    "QueueConfigurations": [],
    "LambdaFunctionConfigurations": []
}

Но служба HTTPS не вызывается. Чего мне не хватает в этой настройке, при которой служба HTTPS будет вызываться по подписке SNS topi c каждый раз, когда файл загружается в корзину S3?

Спасибо, -Louise

Ответы [ 3 ]

0 голосов
/ 24 февраля 2020

Чтобы воспроизвести эту ситуацию, я сделал следующее:

  • Создал Amazon SNS topi c и подписался на мой телефон с помощью SMS ( хороший способ отладки подписок!)
  • Создание корзины Amazon S3 с событием , указывающим на топику Amazon SNS topi c

Я получил это сообщение об ошибке:

Невозможно проверить следующие конфигурации назначения. Разрешения на место назначения topi c не позволяют S3 публиковать sh уведомления из этого сегмента.

  • Затем я добавил указанную выше политику (с учетом моего аккаунта и SNS ARN). )
  • Это позволило событию успешно сохранить

Тестирование

  • Затем я протестировал событие, загрузив файл в корзину S3.
  • Я получил SMS очень быстро

Итак, похоже, что ваша конфигурация должна успешно включить сообщение для отправлять через Amazon SNS. Это говорит о том, что проблема заключается в HTTPS-подписке , либо от ее отправки из SNS, либо от получения ее в приложении.

Я рекомендую добавить подписку по электронной почте или SMS, чтобы проверить, работает ли Amazon SNS получает topi c и пересылает его подписчикам. Если это работает успешно, вам нужно будет отладить получение сообщения в приложении HTTPS.

0 голосов
/ 02 апреля 2020

При той же проблеме событие загрузки S3 не вызывает сообщение sns, даже если наша политика доступа sns установлена ​​правильно. Оказывается, мы НЕ можем использовать опцию Enable encryption, так как события S3 инициируются через сигналы тревоги CloudWatch, которые на данный момент не работают с темами, зашифрованными SNS .

Переключиться обратно на Отключить шифрование , все снова работает.

0 голосов
/ 24 февраля 2020

Необходимо добавить TopicConfiguration

Подробнее о включить уведомление о событии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...