AWS CDK Error: bucket policy already exists on bucket

AWS CDK Error: bucket policy already exists on bucket

我正在尝试在 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

此错误直接来自 CloudFormation,正如它所说,您要将策略添加到的存储桶已经有一个 现有的 。 CloudFormation 不允许 replacement/modification 个在其控制之外创建的存储桶策略。

这是一项安全措施,可防止您意外更改现有政策。

如果您想使用 CDK(或 CloudFormation)控制存储桶策略,您必须在 CDK 中重新创建它,删除原来的,然后使用 CDK 创建。

正如我在上面回复@Marcin 的回复中提到的,this 博客帮助我解决了问题。以下是我遵循的步骤:

  1. 已将云形成 yaml 片段复制到博客中提供的名为 s3-bucket.yml 的文件中。
  2. 首先使用 aws cli 命令创建此存储桶: aws cloudformation deploy --template-file resources/s3-bucket.yml --stack-name my-bucket-stack1
  3. 触发此 CDK 命令以部署我的堆栈:cdk deploy --toolkit-stack-name my-bucket-stack1

这些步骤创建了我的堆栈。