2015-10-06 70 views
2

可以將賬戶A中的S3事件發送到賬戶B中的SQS主題。但是,我能夠實現這一目標的唯一方法是通過在SQS中打開sendMessage操作的權限以允許大家都可以訪S3跨賬戶通知

是否可以將S3事件配置爲將sendMessage配置到SQS主題上具有權限限制的其他帳戶?

例如,如果我嘗試限制對特定帳戶的訪問(例如,123456789012,當我嘗試保存該事件時,在S3控制檯中收到錯誤:「無法驗證以下目標配置:目標上的權限隊列不允許S3從這個桶」

{ 
    "Version": "2012-10-17", 
    "Id": "sqs-permission", 
    "Statement": [ 
    { 
     "Sid": "sqs-permision-statement", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "123456789012" 
     }, 
     "Action": "SQS:SendMessage", 
     "Resource": "arn:aws:sqs:us-east-1:210987654321:my-queue" 
    } 
    ] 
} 

回答

2

發佈通知,根據該documented example,授權需要被授予S3,而不是帳戶擁有桶。

"Principal": { 
    "AWS": "*" 
}, 
... 
"Condition": { 
    "ArnLike": {   
    "aws:SourceArn": "arn:aws:s3:*:*:bucket-name"  
} 
} 

*委託人似乎非常寬容,但可能的解釋是,aws:SourceArn不是一個可能被惡意用戶欺騙的值,比如說aws:SourceIp

相比之下,SNS示例說明了這一原理,它似乎更合適,它是否適合SQS通知:

"Principal": { 
    "Service": "s3.amazonaws.com" 
}, 

你還是會希望包括Condition塊。