尝试添加到资源策略时解决循环依赖性

时间:2020-09-23 08:52:16

标签: amazon-cloudformation aws-cdk

我正在使用CDK,但我认为使用纯CloudFormation也会发生同样的问题(希望可以解决)

我正在使用KMS密钥创建S3存储桶 像这样的东西:

key = aws_kms.Key(self, id="MasterKey"...)
bucket = aws_s3.Bucket(..., encryption_key=key, ...)

然后,我试图通过在所有未使用存储桶策略的内容上添加“拒绝”来加强该策略,例如this aws blog(这不是针对KMS,而是针对一个S3存储桶,但想法是一样的) 像这样:

key_policy = iam.PolicyStatement(
    actions=["kms:Encrypt"],
    effect=iam.Effect.DENY,
    resources=['*'],  # In a key policy, "*" means "this CMK"
    principals=[iam.ServicePrincipal(service="*")],
    conditions={
        "StringNotLike": {
            "aws:userId": f"{bucket_role_id}:*",
        },
    }
)

key.add_to_resource_policy(key_policy)

当我尝试部署时,出现循环依赖错误,这是有道理的,因为 S3创建需要KMS,而KMS创建使用使用S3角色ID的策略。

是否有解决此问题的方法(在事实或类似情况之后不求助于使用boto3)?这是CDK还是CloudFormation问题? 我可以想象,如果我们可以在部署过程中更新资源,但是在部署资源之后,那可以工作。

感谢您的帮助。

0 个答案:

没有答案