S3跨账户通知

问题描述:

可以将账户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" 
    } 
    ] 
} 

发布通知,根据该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块。