Может ли imagedefinitions.json ссылаться на существующее определение задачи? - PullRequest
0 голосов
/ 07 октября 2019

Моя текущая настройка использует AWS CodeBuild для создания образа docker и передает его в AWS ECR. Файл imagedefinitions.json необходим для этапа развертывания в CodePipeline для развертывания образа докера из ECR в службу ECS. Насколько я понимаю, этот файл используется для определения нового определения задачи. В настоящее время я определяю этот файл в файле buildspec.yml в CodeBuild:

echo Writing image definitions file...  
- printf '[{"name":"%s","imageUri":"%s"}]' $MODULE $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG > imagedefinitions.json    

artifacts:  
  files: imagedefinitions.json  

Однако я хотел бы использовать существующее определение задачи вместо создания новой редакции того же определения задачи для каждой сборки. Мне нужно использовать переменные среды, определенные в моем существующем определении задачи, и я не нашел способа определить их в файле imagedefinitions.json.

  1. Можно ли использовать imagedefinitions.json, чтобы указатьопределение существующей задачи?
  2. Или можно указать переменные среды в этом файле?

1 Ответ

0 голосов
/ 07 октября 2019

Можно ли использовать файл imagedefinitions.json для определения существующего определения задачи?

Файл «imagedefinitions.json» не определяет задачу ECS. Он определяет имя контейнера (часть определения задачи ECS) и тег image_name:.

[
  {
    "name": "sample-app",
    "imageUri": "11111EXAMPLE.dkr.ecr.us-west-2.amazonaws.com/ecs-repo:latest"
  }
]

В действии развертывания ECS вы указываете имя кластера и имя службы. Добавьте два элемента из «imagedefinitions.json», т. Е. Имя-контейнера и изображения: тег, и рабочий задания ECS имеет всю информацию, необходимую для создания редакции определения задачи и обновления службы (служба имеет соответствующее определение задачи).

Определение действия развертывания ECS в конвейере:

      {
            "name": "Deploy",
            "actions": [
                {
                    "name": "Deploy",
                    "actionTypeId": {
                        "category": "Deploy",
                        "owner": "AWS",
                        "provider": "ECS",
                        "version": "1"
                    },
                    "runOrder": 1,
                    "roleArn": "arn:aws:iam::<Account>:role/Pipeline_Role",
                    "configuration": {
                        "ClusterName": "<Cluster>",     <====================
                        "ServiceName": "<Service>”      <====================
                    },
                    "outputArtifacts": [],
                    "inputArtifacts": [
                        {
                            "name": "SourceArtifact"
                        }
                    ],
                    "region": "us-east-1"
                }
            ]
        }


Обратите внимание, что результатом этапа развертывания с использованием действия развертывания ECS является новая редакция определения задачи, которая будет включать обновленную версиюURI изображения для указанного контейнера в определении задачи. Ваши другие параметры определения задачи (например, переменные среды) должны оставаться неизменными.

Или, можно ли указать переменные среды в этом файле?

Нет, но какКак обсуждалось выше, существующие переменные среды Task Def (TaskDef, из которых создается новая ревизия) останутся без изменений.

Дайте мне знать, если есть путаница.

...