Я использую terraform для предоставления необходимых ресурсов.
У меня есть кодовая линия terraform resource
, и Production
stage
читает файл imagedefinitions.json
, чтобы узнать, какие образы для развертывания:
resource "aws_codepipeline" "pipeline" {
stage {
name = "Build"
action {
name = "Build"
category = "Build"
owner = "AWS"
provider = "CodeBuild"
version = "1"
input_artifacts = ["source"]
output_artifacts = ["imagedefinitions"]
configuration {
ProjectName = "${var.project_prefix}-codebuild"
}
}
}
stage {
name = "Production"
action {
name = "Deploy"
category = "Deploy"
owner = "AWS"
provider = "ECS"
input_artifacts = ["imagedefinitions"]
version = "1"
configuration {
ClusterName = "${var.ecs_cluster_name}"
ServiceName = "${var.ecs_service_name}"
FileName = "imagedefinitions.json"
}
}
}
Файл imagedefinitions.json
построено на этапе сборки, начиная с buildspec.yml
:
build:
commands:
- echo Build started on 'date'
- echo Building the Docker image...
- docker build -t $REPOSITORY_URI:latest .
- docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
post_build:
commands:
- echo Build completed on 'date'
- echo Pushing the Docker images...
- docker push $REPOSITORY_URI:latest
- docker push $REPOSITORY_URI:$IMAGE_TAG
- echo Writing image definitions file...
- printf '[{"name":"docker-image-name","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json
Я не уверен, какое имя изображения должно быть в этой строке:
- printf '[{"name": "docker-image-name", "imageUri": "% s"}] '$ REPOSITORY_URI: $ IMAGE_TAG> imagedefinitions.json
Ошибка, которую я получаюповторяет значение "name" из этой строки:
"Недопустимая конфигурация действия. Имя-докер контейнера AWS ECS не существует"
Что такое имя Iдолжен иметь здесь?