You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CDK部署失败报无资产桶错误:Failed to publish asset

AWS CDK部署S3桶失败问题

问题背景

我正在学习AWS CDK,尝试创建一个新的S3桶,代码实现如下:

from aws_cdk import (
    Stack,
    aws_s3 as s3
)
from constructs import Construct
class MyCDKBucket(Stack):
    def __init__(self, scope: Construct, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)
        # Create a simple S3 bucket
        bucket = s3.Bucket(self, 
            "MyFirstBucket",  # Unique identifier for the bucket
            versioned=True,   # Enable versioning (optional)
            bucket_name="cdk_bucket",
            removal_policy=core.RemovalPolicy.DESTROY  # Automatically delete the bucket on stack deletion
        )

执行步骤及输出

  1. cdk bootstrap执行成功,输出:
Bootstrapping environment aws://ACCOUNT/us-east-1...
Trusted accounts for deployment: (none)
Trusted accounts for lookup: (none)
Using default execution policy of 'arn:aws:iam::aws:policy/AdministratorAccess'. Pass '--cloudformation-execution-policies' to customize.
Environment aws://ACCOUNT/us-east-1 bootstrapped(no changes).
  1. cdk synth无报错,部分输出:
Parameters:
  BootstrapVersion:
    Type: AWS::SSM::Parameter::Value<String>
    Default: /cdk-bootstrap/hnb659fds/version
    Description: Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]
  1. cdk deploy失败,错误信息:
Synthesis time: 3.42s
CdkHelloStack: start: Building 12ccc934435a1d971aabaf873711add39a08ca1f0e872df373bcf5d43f5e1e45:current_account-current_region
CdkHelloStack: success: Built 12ccc934435a1d971aabaf873711add39a08ca1f0e872df373bcf5d43f5e1e45:current_account-current_region
CdkHelloStack: start: Publishing 12ccc934435a1d971aabaf873711add39a08ca1f0e872df373bcf5d43f5e1e45:current_account-current_region
CdkHelloStack: fail: No bucket named 'cdk-hnb659fds-assets-ACCOUNT-us-east-1'. Is account 448049821786 bootstrapped?
Failed to publish asset 12ccc934435a1d971aabaf873711add39a08ca1f0e872df373bcf5d43f5e1e45:current_account-current_region

疑问

我原本认为运行cdk deploy后会创建名为cdk_bucket的S3桶,请问我的理解有误吗?是否遗漏了步骤?


解决方案

1. 代码修复:缺失模块导入

代码中使用了core.RemovalPolicy.DESTROY但未导入core模块,需补充导入:

from aws_cdk import core

或者改用CDK v2标准写法,直接导入RemovalPolicy:

from aws_cdk import (
    Stack,
    aws_s3 as s3,
    RemovalPolicy
)
# 对应修改为:
removal_policy=RemovalPolicy.DESTROY

2. 修复Bootstrap环境不匹配问题

错误提示找不到资产桶,说明当前部署的账号/区域和Bootstrap环境不一致:

  • 检查当前AWS CLI配置的账号是否为错误信息中的448049821786,若不是则切换账号后重新执行Bootstrap
  • 若Bootstrap的区域和部署区域不一致,需在目标区域重新执行Bootstrap:
cdk bootstrap aws://448049821786/us-east-1

3. 关于cdk_bucket的创建逻辑

你的理解没错,代码正确的前提下,cdk deploy会创建名为cdk_bucket的S3桶,但需注意:S3桶名是全局唯一的,如果该名称已被其他用户占用,部署也会失败,需更换唯一桶名。


内容的提问来源于stack exchange,提问作者user1079065

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:04:53