AWS CDK CodePipeline без Synth/ShellStep

Мой проект 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»...)


54
1

Ответ:

Решено

Пакет CodePipeline из pipelines используется для сборки и развертывания приложений CDK. Вот почему он использует синтезаторный шаг. Если вы хотите собрать и развернуть образ Docker в ECR, вам следует использовать конструкцию Pipeline из пакета aws_codepipeline. Дополнительную информацию можно найти в документации.