【发布时间】:2020-04-03 00:58:35
【问题描述】:
我希望每次将文件上传到 S3 存储桶时调用某个 HTTPS 服务。
我创建了 S3 存储桶和一个 SNS 主题,其中包含经过验证的订阅,并将 HTTPS 服务作为端点。 我可以通过 AWS UI 在 SNS 主题上发布消息,并看到 HTTPS 服务按预期调用。 在 S3 存储桶上,我创建了一个事件,它应该链接存储桶和主题。在我第一次尝试时,我得到了一个错误,因为不允许存储桶写入主题,所以 c.f.文档中,我将主题访问策略更改为:
{
"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 是在 AWS UI 中显示主题时可以看到的主题所有者 ID,ACCOUNT_ID 是在 AWS UI 中的账户设置下显示的账户 ID。 主题访问策略中的这种更改允许我在存储桶上创建事件:
当我调用 API 方法 getBucketNotificationConfiguration 我得到:
{
"TopicConfigurations": [
{
"Id": "OrderFulfilled",
"TopicArn": "arn:aws:sns:eu-central-1:TOPIC_ID:OrderUpdates",
"Events": [
"s3:ObjectCreated:*"
]
}
],
"QueueConfigurations": [],
"LambdaFunctionConfigurations": []
}
但是没有调用 HTTPS 服务。我在此设置中缺少什么,每次将文件上传到 S3 存储桶时都会触发 SNS 主题订阅调用 HTTPS 服务?
谢谢, -路易丝
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-sns