问题描述
基于身份的策略不需要指定“主体”,因为它是隐式的。将相同的理由应用于SNS访问控制策略(这是基于资源的策略),为什么要求在策略中指定与“资源”相同的SNS主题?对于存储桶,“资源”有助于缩小到特定的前缀等,但是在SNS访问控制策略中使用(隐式)“资源”到底有什么意义呢?即,将主题ARN指定为“资源”,但将策略附加到同一主题。下面显示了AWS文档中的SNS访问控制策略示例,以供参考。
{
"Statement": [{
"Sid": "grant-1234-publish","Effect": "Allow","Principal": {
"AWS": "111122223333"
},"Action": ["sns:Publish"],"Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic"
}]
}
解决方法
用于定义策略声明的语法需要Resource
或NotResource
。来自docs:
声明必须包括Resource或NotResource元素。
因此您必须明确提供它。 SNS主题不使用任何特殊的策略语法,这将使它们不具有Resource
组件。
因此,我认为没有更多的东西了。这只是正确的政策声明的语法要求。