【问题标题】:AWS CDK Error: bucket policy already exists on bucketAWS CDK 错误:存储桶上已存在存储桶策略
【发布时间】:2020-07-18 19:33:05
【问题描述】:
我正在尝试在 java 中使用 CDK 创建一个 lambda 和一个 DynamoDB。当我尝试执行“CDK Deploy”时,我遇到以下错误:
11:20:30 AM | CREATE_FAILED | AWS::S3::BucketPolicy | StagingBucketPolicy
The bucket policy already exists on bucket xyz-cdk-toolkit-stagingbucket-1hpv60vcdqk7s.
CDK Version: 1.48.0
【问题讨论】:
标签:
amazon-web-services
aws-lambda
aws-cdk
【解决方案1】:
此错误直接来自 CloudFormation,正如它所说,您要向其中添加策略的存储桶已经有一个现有的。 CloudFormation不允许替换/修改在其控制之外创建的存储桶策略。
这是一项安全措施,可防止您意外更改现有政策。
如果您想使用 CDK(或 CloudFormation)控制存储桶策略,您必须在 CDK 中重新创建,删除原来的,然后使用 CDK 创建。
【解决方案2】:
正如我在回复@Marcin 的回复时在上面的评论中提到的,this 博客帮助我解决了这个问题。以下是我遵循的步骤:
- 将云形成 yaml sn-p 复制到博客中提供的名为 s3-bucket.yml 的文件中。
- 使用 aws cli 命令首先创建此存储桶:
aws cloudformation deploy --template-file resources/s3-bucket.yml --stack-name my-bucket-stack1
- 触发了这个 CDK 命令来部署我的堆栈:
cdk deploy --toolkit-stack-name my-bucket-stack1
这些步骤创建了我的堆栈。