AWS CDK Pipelines引入了多个构件存储桶的问题,可能导致存储桶超过限制,影响部署。下面是解决方法,可以使用CDK Stacks的方法将所有存储桶的信息记录在单个堆栈中进行管理。
from aws_cdk import (
core,
aws_s3 as s3,
aws_codepipeline as codepipeline,
aws_codepipeline_actions as actions,
pipelines,
)
class MyPipelineStack(core.Stack):
def __init__(
self,
scope: core.Construct,
id: str,
repo_name: str,
**kwargs,
) -> None:
super().__init__(scope, id, **kwargs)
# create an S3 bucket for artifacts
artifact_bucket = s3.Bucket(self, "MyArtifactBucket")
# create another S3 bucket for source code in, if needed
source_bucket = s3.Bucket(self, "MySourceBucket")
# ...
# create the pipeline
pipeline = pipelines.CdkPipeline(
self, "MyPipeline",
pipeline_name="MyPipeline",
cloud_assembly_artifact=pipelines.Artifact(artifact_bucket=artifact_bucket,
name="MyAppPipelineArtifact"),
self_mutating=True,
source_action=actions.GitHubSourceAction(
action_name='GitHub-Source',
owner="",
repo=repo_name,
oauth_token=core.SecretValue.secrets_manager(""),
output=source_artifact,
),
synth_action=MyPipelineStack.build_synth_action(
source_artifact=source_artifact,
cloud_assembly_artifact=cloud_assembly_artifact
),
)
# add an export to the artifact bucket name, for use in other stacks
core.Tag.add(artifact_bucket, "canExport", "True")
# export the bucket name as a stack output
core.CfnOutput(
self, "MyArtifactBucketName",
value=artifact_bucket.bucket_name.export_name,
description="The name of the artifact bucket",
export_name=f"{core.Stack.of(self