我正在尝试通过堆栈策略保护S3堆栈上的单个资源。但是,即使从AWS文档复制和粘贴示例也会引发“无效的堆栈策略”错误。
我尝试了所有我能想到的组合,并不断获得相同的结果。我可能只是从根本上误解了他们认为什么是“逻辑资源ID”与“资源”或资源名称。他们给出的一个例子是:
"Statement" : [
{
"Effect" : "Deny",
"Action" : "Update:*",
"Principal": "*",
"Resource" : "LogicalResourceId/MyDatabase"
},
{
"Effect" : "Allow",
"Action" : "Update:*",
"Principal": "*",
"Resource" : "*"
}
]
}
我的第一个蛮力尝试是简单地将策略设置为“ {}”,以保护所有内容;并且有效。
我正在尝试将其修改为我自己的资源,请参见代码示例。
这包括命令行命令:
aws cloudformation set-stack-policy --stack-name *mystackname* --stack-policy-body '{
>> "Statement" : [
>> {
>> "Effect" : "Allow",
>> "Action" : "Update:*",
>> "Principal": "*",
>> "Resource" : "*"
>> },
>> {
>> "Effect" : "Deny",
>> "Action" : "Update:*",
>> "Principal": "*",
>> "Resource" : "WebAppBucket/lex-web-ui-loader-config.json",
>> }
>> ]
>> }'
我已经尝试了多种方法来作为“资源”,例如文件名,ARN等。用于“描述堆栈资源”的CLI列出了逻辑名称“ CodeBuildDeploy”。以及“ CodeBuildDeploy / WebAppBucket”都尝试过相同的错误。