Как настроить уведомление Amazon S3 для получения уведомлений, когда в вашей корзине происходят определенные события, с помощью aws-cdk в python?

Как настроить уведомление Amazon S3 для получения уведомлений, когда в вашей корзине происходят определенные события, с помощью AWS-CDK в python? Когда я использую приведенный ниже код, я могу настроить подписку. Но когда файл загружается на S3, он не отправляет мне электронное письмо. Когда я вручную обновляю политику доступа в консоли SNS, она работает, но я не знаю, как реализовать это в моем CDK. Я также прикрепил политику доступа к SNS, которую я пытаюсь реализовать, но не получаю этого. Вот мой фрагмент CDK:

        #SNS

        sf_topic = aws_sns.Topic(
            self, "MyTopic",
            display_name="My Topic"
        )

        email=aws_sns_subscriptions.EmailSubscription("[email protected]")
        sf_topic.add_subscription(subscription=email)

        notification = aws_s3_notifications.SnsDestination(sf_topic)

        sf_bucket.add_event_notification(aws_s3.EventType.OBJECT_CREATED, notification)
{
 "Version": "2008-10-17",
 "Id": "example-ID",
 "Statement": [
  {
   "Sid": "s3-event-notifier",
   "Effect": "Allow",
   "Principal": {
     "Service": "s3.amazonaws.com"
   },
   "Action": [
    "SNS:Publish"
   ],
   "Resource": "<UPDATE-YOUR-SNS-ARN-HERE>",
   "Condition": {
      "ArnLike": {          
      "aws:SourceArn": "arn:aws:s3:*:*:<UPDATE-YOUR-BUCKET-NAME-HERE>"
    }
   }
  }
 ]
}

person A.Codes    schedule 22.11.2019    source источник


Ответы (1)


Вы должны создать iam.PolicyStatement и прикрепить его к своей теме SNS.

policyStatement = _iam.PolicyStatement(
    resources=[sf_topic.topic_arn],
    actions=[
        "sns:Publish"
    ],
    effect=_iam.Effect.ALLOW,
    conditions={"ArnLike": {"aws:SourceArn": sf_bucket.bucket_arn}}
)

sf_topic.add_to_resource_policy(policyStatement)
person Vikyol    schedule 22.11.2019