Мой проект AWS создает образ Docker, отправляет его в ECR, а затем развертывает в контейнере ECS.
Исходный код находится на CodeCommit, и у меня уже есть два рабочих стека CDK для 1) сборки образа Docker и 2) развертывания в ECS.
Я хотел бы настроить конвейер через CDK. Если я использую консоль, настроить конвейер очень просто, добавив этапы «Сборка» и «Развертывание», определенные стеками.
Если я хочу настроить конвейер через CDK, я мог бы использовать код CDK Python, подобный этому:
# Create a source action for CodeCommit
source_action = cpactions.CodeCommitSourceAction(
action_name = "CodeCommit",
output=codepipeline.Artifact("SourceArtifact")
repository=codecommit.Repository(self, "SourceRepo",
repository_name=SOURCE_GIT_REPOSITORY),
branch=SOURCE_GIT_BRANCH
)
# Create a ShellStep for the synth action (BUT I DO NOT NEED THIS!!!)
synth_action = pipelines.ShellStep("Synth",
input=source_action.output,
commands=[])
# Create a new CodePipeline
pipeline = pipelines.CodePipeline(self, PIPELINE_NAME,
pipeline_name=PIPELINE_NAME,
synth=synth_action, # THIS IS NOT OPTIONAL!
self_mutation=False)
# Add the build stage
pipeline.add_stage(BuildStage(self, "Build"))
# Add the deploy stage
pipeline.add_stage(DeployStage(self, "Deploy", env=kwargs['env']))
проблема в том, что параметр 'synth' обязателен, но мне он точно не нужен! Что я могу сделать, чтобы мой конвейер работал без «синтезатора»? Мне просто нужен исходный код, а затем этапы сборки и развертывания.
Что мне не хватает?
(Кстати, компилятор жалуется, что в приведенном выше коде действие «Build» уже существует, чтобы подчеркнуть, что я не понял разницы между «Build» и «Synth»...)
Пакет CodePipeline
из pipelines
используется для сборки и развертывания приложений CDK. Вот почему он использует синтезаторный шаг. Если вы хотите собрать и развернуть образ Docker в ECR
, вам следует использовать конструкцию Pipeline
из пакета aws_codepipeline
. Дополнительную информацию можно найти в документации.
Не уверен, что вы имеете в виду, это позволяет вам добавлять стеки... CodePipeline позволяет вам добавлять к нему этапы. Хотите ли вы добавить существующие проекты Build и CodeDeploy или проекты, созданные с помощью CDK? У вас есть метод add_stage в конвейере docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_codepipeline/…
Хорошо, это имеет смысл. Но с помощью консоли я напрямую добавляю существующие службы CodeBuild и CodeDeploy в новый конвейер. Я просто хочу сделать то же самое, и, очевидно, CodePipeline позволяет мне добавлять стеки (завернутые в этапы) в конвейер, хотя кажется, что с помощью Pipeline это невозможно сделать.