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

如何在Python版CDK中使用已有Amazon S3桶存储Artifacts

使用现有S3桶存储CodePipeline构件的实现方法

你当前定义的source_artifact和cloud_assembly_artifact是CodePipeline的逻辑占位对象,实际的存储位置由Pipeline全局配置决定,不需要修改Artifact实例的声明,只需按以下步骤调整即可:

  • 首先导入S3模块,引用你已经创建好的S3桶
from aws_cdk import aws_s3 as s3

# 填入你的现有S3桶名称,同账号同区域场景可直接使用该方法
existing_artifact_bucket = s3.Bucket.from_bucket_name(
    self,
    id="ExistingArtifactBucket",
    bucket_name="替换为你的现有S3桶名称"
)

如果是跨账号、跨区域的桶,建议使用s3.Bucket.from_bucket_arn方法导入,同时提前配置好桶策略,允许当前AWS账号的CodePipeline服务角色读写桶内资源。

  • 第二步在CdkPipeline的构造参数中添加artifact_bucket配置,传入上面导入的桶实例即可,完整修改后的代码如下:
from aws_cdk import aws_s3 as s3
import aws_cdk.aws_codepipeline as codepipeline
import aws_cdk.aws_codepipeline_actions as cpactions
import aws_cdk.pipelines as pipelines
import aws_cdk.aws_codecommit as codecommit
from aws_cdk import Stack, App
import constructs

# 其他代码逻辑保持不变
source_artifact = codepipeline.Artifact()
cloud_assembly_artifact = codepipeline.Artifact()

# 导入现有S3桶
existing_artifact_bucket = s3.Bucket.from_bucket_name(
    self,
    id="ExistingArtifactBucket",
    bucket_name="替换为你的现有S3桶名称"
)

pipeline = pipelines.CdkPipeline(self, 'Pipeline',
  cloud_assembly_artifact=cloud_assembly_artifact,
  pipeline_name='testPipeline',
  # 新增配置:指定现有桶作为构件存储桶
  artifact_bucket=existing_artifact_bucket,
  source_action = cpactions.CodeCommitSourceAction(
            repository=codecommit.Repository.from_repository_name(
              self,
              id="cicd_pipeline",
              repository_name="repo-name"
            ),
            branch='master',
            action_name='CodeCommit',
            trigger=cpactions.CodeCommitTrigger.POLL,
            output=source_artifact,
        ),
  synth_action=pipelines.SimpleSynthAction(
    source_artifact=source_artifact,
    cloud_assembly_artifact=cloud_assembly_artifact,
    install_command='npm install -g aws-cdk && pip install -r requirements.txt',
    build_command='pytest unittests',
    synth_command='cdk synth'))

注意:如果你的现有S3桶开启了KMS加密,还需要给CodePipeline执行角色、Synth动作执行角色授予对应KMS密钥的加密、解密权限,避免读写构件时报权限错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:39:00