Lul*_*ull 2 amazon-s3 amazon-web-services amazon-sns
我希望每次将文件上传到 S3 存储桶时都调用某个 HTTPS 服务。
我已经创建了 S3 存储桶和一个 SNS 主题,其中包含一个经过验证的订阅,HTTPS 服务作为端点。我可以通过 AWS UI 在 SNS 主题上发布消息,并看到 HTTPS 服务按预期调用。在 S3 存储桶上,我创建了一个事件,它应该链接存储桶和主题。在我第一次尝试时出现错误,因为存储桶不允许写入主题,因此请参阅文档,我将主题访问策略更改为:
{
"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:*:*:*"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
其中 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": []
}
Run Code Online (Sandbox Code Playgroud)
但是没有调用HTTPS服务。我在此设置中缺少什么,每次将文件上传到 S3 存储桶时,都会触发 SNS 主题订阅调用 HTTPS 服务?
谢谢,-路易斯
遇到同样的问题,即使我们的 sns 访问策略设置正确,S3 上传事件也不会触发 sns 消息。事实证明我们不能使用该Enable encryption选项,因为 S3 事件是通过 CloudWatch 警报触发的,目前这些警报不适用于 SNS加密主题。
切换回禁用加密选项,一切正常。
为了重现这种情况,我执行了以下操作:
我收到此错误消息:
无法验证以下目标配置。目标主题的权限不允许 S3 从此存储桶发布通知。
测试
因此,您的配置似乎应该成功启用通过 Amazon SNS 发送消息。这表明问题出在HTTPS 订阅上,无论是从 SNS 发送还是在应用程序中接收。
我建议您添加电子邮件或 SMS 订阅,以验证 Amazon SNS 是否正在接收主题并将其转发给订阅者。如果此操作成功,那么您将需要在 HTTPS 应用程序中调试消息的接收。
| 归档时间: |
|
| 查看次数: |
2361 次 |
| 最近记录: |