簡體   English   中英

S3事件的Cloudformation SQS策略

[英]Cloudformation SQS Policy for S3 events

我正在嘗試為SQS隊列創建一個策略,該策略允許任何S3存儲桶將事件發送到隊列。 我似乎無法為特定的S3隊列執行此操作,因為我最終得到循環依賴。

我已經創建了一個用於創建隊列和策略的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" } ]
        }
    }

最后,我找到了一個解決方案 - 我在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"} ]
        }            
    },

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

看看上面的模板片段,我不確定“S3Notifications”指向的是什么,但我認為它是S3存儲桶。 SQS策略文檔“Resource”應該是S3存儲桶的ARN。 S3存儲桶上的“Ref”功能的參考值為“Name”。 我相信你需要ARN。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM