小编Lul*_*ull的帖子

为什么 S3 文件上传没有触发事件到 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:*"
            ] …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services amazon-sns

2
推荐指数
2
解决办法
2361
查看次数