如何使用 python 中的 aws-cdk 设置 Amazon S3 通知以在您的存储桶中发生某些事件时接收通知?
How do I set up Amazon S3 notification to receive notifications when certain events happen in your bucket using aws-cdk in python?
如何使用 python 中的 AWS-CDK 设置 Amazon S3 通知以在您的存储桶中发生某些事件时接收通知?当我使用下面的代码时,我可以设置订阅。但是当文件上传到 S3 时,它不会给我发送电子邮件。当我在 SNS 控制台中手动更新访问策略时,它起作用了,但我不知道如何在我的 CDK 中实现它。我还附上了我试图实现的 SNS 访问策略,但我没有得到它。这是我的 CDK 片段:
#SNS
sf_topic = aws_sns.Topic(
self, "MyTopic",
display_name="My Topic"
)
email=aws_sns_subscriptions.EmailSubscription("example@email.com")
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>"
}
}
}
]
}
您应该创建一个 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)
如何使用 python 中的 AWS-CDK 设置 Amazon S3 通知以在您的存储桶中发生某些事件时接收通知?当我使用下面的代码时,我可以设置订阅。但是当文件上传到 S3 时,它不会给我发送电子邮件。当我在 SNS 控制台中手动更新访问策略时,它起作用了,但我不知道如何在我的 CDK 中实现它。我还附上了我试图实现的 SNS 访问策略,但我没有得到它。这是我的 CDK 片段:
#SNS
sf_topic = aws_sns.Topic(
self, "MyTopic",
display_name="My Topic"
)
email=aws_sns_subscriptions.EmailSubscription("example@email.com")
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>"
}
}
}
]
}
您应该创建一个 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)