1

我試圖爲SQS隊列創建一個策略,它允許任何S3存儲桶向隊列發送事件。我似乎無法爲特定的S3隊列執行此操作,因爲我最終得到了循環依賴關係。S3事件的Cloudformation SQS策略

我創建這將創建隊列和政策cloudformation模板,但是當我嘗試手動設置的S3桶送活動中,我得到一個消息,說上的目標隊列

權限做不允許S3從這個桶

樣板段,我使用創建策略發佈 通知是:

"SQSNotifcationFromS3" : { 
     "Type" :  "AWS::SQS::QueuePolicy", 
     "DependsOn" : "S3Notifications", 
     "Properties" : { 
      "PolicyDocument" : { 
       "Version": "2012-10-17", 
       "Id": "SQSIDsimon", 
       "Statement": [ 
        { 
         "Sid": "example-statement-ID", 
         "Effect": "Allow", 
         "Principal": { 
          "Service": "s3.amazonaws.com" 
          }, 
         "Action": "SQS:*", 
         "Resource": { "Ref" : "S3Notifications"} 
        } 
       ]     
      }, 
      "Queues" :  [ { "Ref" : "S3Queue" } ] 
     } 
    } 

回答

1

最後,我發現了一個解決方案 - 我設置了SQS權限,以便任何S3桶可以添加事件隊列:

"S3EventQueuePolicy" : { 
     "Type" : "AWS::SQS::QueuePolicy", 
     "DependsOn" : [ "S3EventQueue" ], 
     "Properties" : { 
      "PolicyDocument" : { 
       "Id": "SQSPolicy", 
       "Statement": [ 
        { 
         "Sid": "SQSEventPolicy", 
         "Effect": "Allow", 
         "Principal": "*", 
         "Action": "SQS:*", 
         "Resource": "*", 
         "Condition": { 
          "ArnLike": { 
           "aws:SourceArn": "arn:aws:s3:::*" 
          } 
         } 
        } 
       ] 
      }, 
      "Queues" : [ { "Ref" : "S3EventQueue"} ] 
     }    
    }, 
0

在AWS控制檯中,您是否確認該隊列已成功授予對s3存儲桶的權限?在SQS中,選擇隊列並查看權限選項卡。

看看上面的模板片段,我不確定「S3Notifications」指向什麼,但我會認爲它是S3存儲桶。 SQS策略文檔「資源」應該是S3存儲桶的ARN。 S3存儲桶上的「參考」功能的參考值爲「名稱」。我相信你需要ARN。

參見:http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSExamples.html

和:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html