amazon-cloudformation - 尝试添加到资源策略时解决循环依赖关系
问题描述
我正在使用 CDK,但我认为使用纯 CloudFormation 也会发生相同的问题(希望可以解决)
我正在创建一个带有 KMS 密钥的 S3 存储桶,如下所示:
key = aws_kms.Key(self, id="MasterKey"...)
bucket = aws_s3.Bucket(..., encryption_key=key, ...)
然后,我试图通过在不使用存储桶策略的任何内容上添加拒绝来收紧政策,就像这样,正如这个 aws 博客所建议的那样(这不是针对 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 问题?我想如果我们可以在部署期间更新资源,但在部署资源之后,那么这可以工作。
谢谢你的帮助。
解决方案
推荐阅读
- html - Apple Mail 上的 SendGrid 电子邮件中的按钮链接不起作用
- apache - mod_deflate 的问题 - 压缩可执行文件
- json - 如何强制 TensorFlow 在 float16 下运行?
- c++ - 将 std::filesystem::path 传递给函数段错误
- angular - 如何在 Angular 5 动画中正确定义过渡?
- azure - 用于 azurefile 在 aks 上的 terraform kubernetes_storage_class
- listview - Xamarin.Forms ListView 的 ItemSource 中的项目数是否会影响其性能
- ruby-on-rails - 保存嵌套表单参数
- html - 如何在 HTML 中隐藏特定图像
- bash - 如何修复我的 PS1 以及在我搞砸之后