AWS CDK 错误:存储桶上已存在存储桶策略
Posted
技术标签:
【中文标题】AWS CDK 错误:存储桶上已存在存储桶策略【英文标题】:AWS CDK Error: bucket policy already exists on bucket 【发布时间】: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
【问题讨论】:
您已经尝试过销毁堆栈并进行干净部署? 【参考方案1】:此错误直接来自 CloudFormation,正如它所说,您要向其中添加策略的存储桶已经有一个现有的。 CloudFormation不允许替换/修改在其控制之外创建的存储桶策略。
这是一项安全措施,可防止您意外更改现有政策。
如果您想使用 CDK(或 CloudFormation)控制存储桶策略,您必须在 CDK 中重新创建,删除原来的,然后使用 CDK 创建。
【讨论】:
感谢@Marcin 的回复。确实这就是问题所在。这个博客,[joebehrens.com/posts/cdk-bootstrap-existing-s3-bucket/]帮我解决了这个问题。【参考方案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
这些步骤创建了我的堆栈。
【讨论】:
以上是关于AWS CDK 错误:存储桶上已存在存储桶策略的主要内容,如果未能解决你的问题,请参考以下文章
如何将生命周期策略添加到 AWS CDK Typescript 中的现有 S3 存储桶
从托管在 S3 存储桶上的站点访问 AWS API 时出现 CORS 问题 [关闭]
AWS S3 存储桶 CORS 策略错误:请求的资源上不存在“Access-Control-Allow-Origin”标头