代码之家  ›  专栏  ›  技术社区  ›  whitebear

CREATE_FAILED|AWS::S3::bucket但AWS控制台中没有bucket

  •  0
  • whitebear  · 技术社区  · 4 年前

    我正在使用aws cdk和 $cdk deploy 以部署一些堆栈。

    然而,会出现这样的错误

    21:12:30 | CREATE_FAILED        | AWS::S3::Bucket                             | S3BucketStaticResourceB341FA19
    si2-s3-sbu-mytest-xxx-static-resource-5133297d-91 already exists
    

    通常这种错误,我可以在AWS控制台中找到该项目。

    然而,在这种情况下, $aws s3 ls 没有显示名为this的bucket。

    为什么会发生这种情况,或者我应该在哪里解决??

    0 回复  |  直到 4 年前
        1
  •  2
  •   gshpychka    4 年前

    一般来说,最好避免为使用CDK创建的资源显式提供物理名称。

    这个 documentation 解释了理由:

    在AWS CloudFormation中,为资源分配物理名称有一些缺点。最重要的是,如果资源分配了物理名称,则对需要资源替换的已部署资源的任何更改,例如对创建后不可变的资源属性的更改,都将失败。如果您最终处于这种状态,唯一的解决方案是删除AWS CloudFormation堆栈,然后再次部署AWS CDK应用程序。有关详细信息,请参阅AWS CloudFormation文档。

    因此,如果您引入了一个需要更换bucket的更改,您将看到前面提到的错误。

    在您的具体情况下,正如@Omar Rosadio在评论中所说,存储桶名称在所有账户和地区都是全局唯一的,这可能是S3特有的问题。这使得自己命名水桶成为一个特别糟糕的主意。

    如果你没有通过 bucketName 属性时,CDK会为您生成一个唯一的名称,所以您不必担心这一点,我建议您这样做。