我有一个如下所示的CF模板
GTMPlatformKMSKey
创建资源CREATE_FAILED
时出现错误。它失败,并显示Policy contains a statement with one or more invalid principals. (Service: AWSKMS; Status Code: 400; Error Code: MalformedPolicyDocumentException; Request ID: 5673456f-b458-45c6-854b-9ed63c737772)
和错误消息
Allow use of the key
如果我从Allow attachment of persistent resources
删除Sid GTMPlatformKMSKey
和SystemUserAccount
,则模板运行正常。不知道我在这里想念的是什么。任何帮助都非常感激
P.S。 -环境中已经存在资源DeploymentRoleName
和try:
os.remove(r'C:\test')
except WindowsError as e:
if e.winerror == 5: # maybe we tried to remove a directory, so
os.rmdir(r'C:\test')
else:
raise # we just re-raise whatever the exception was.
编辑-按照建议,将模板缩小为仅包含失败的资源
答案 0 :(得分:2)
就我而言,我试图部署一个 CdkPipeline
堆栈,该堆栈具有多个帐户的阶段。我需要在部署我的堆栈的每个帐户和区域上运行 cdk bootstrap ${account}/${region}
。
cdk bootstrap 123456789012/us-west-2
cdk bootstrap 123456789012/us-east-1
cdk bootstrap 987654321098/us-east-1
我还必须以 per this link 的身份授予第二个帐户权限。
codepipeline
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"codepipeline.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:root",
"arn:aws:iam::987654321098:root"
]
},
"Action": "sts:AssumeRole"
}
]
}
答案 1 :(得分:0)
您需要确认您要为其分配资源的所有主要信息在您的AWS账户中均可用,或者已被正确引用,或者它们在模板中具有正确的拼写。这些就是我所经历的。
答案 2 :(得分:0)
请检查云形成模板中提到的KMS用户。这可能是原因之一。
答案 3 :(得分:0)
您可以使用 cdk bootstrap 调用中的标志从 cli 设置信任关系:
npx cdk bootstrap \
--profile PROFILE2 \
--trust ACCOUNT1 \
--cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws://ACCOUNT2/us-east-1