Вам нужно два шага
- Создать новую ревизию
- Добавить новое определение задачи для указанной выше ревизии
Но я хочу docker путь к изображению из ECR, который динамически передается туда же.
Приведенный ниже скрипт сделает именно то, что вы ищете, все, что вам нужно для определения или замены этих ENV
TAG="BUILD_NUMBER"
NODE_ENV="development"
AWSREGION="us-west-2"
Создать revision.sh
# task defintion dyanmic variable
TAG="BUILD_NUMBER"
NODE_ENV="development"
AWSREGION="us-west-2"
# Creae new revesion
NEW_TASK_DEFINITION=$(echo `cat <<EOF
{
"containerDefinitions": [
{
"portMappings": [
{
"hostPort": 3000,
"protocol": "tcp",
"containerPort": 3000
}
],
"environment":
[
{
"name": "NODE_ENV",
"value":"$NODE_ENV"
}
],
"ulimits": [
{
"name": "nofile",
"softLimit": 65536,
"hardLimit": 95536
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "${ENV}_nodejs",
"awslogs-region": "$AWSREGION",
"awslogs-stream-prefix": "ecs"
}
},
"memoryReservation": 500,
"image": "1234.dkr.ecr.${AWSREGION}.amazonaws.com/test/nodejs:${TAG}",
"name": "$ENV-nodejs"
}
],
"family": "$ENV-nodejs"
}
EOF`
)
echo "New Revesion"
echo "${NEW_TASK_DEFINITION}" | python -m json.tool
#####################
#####Step 2#########
# Registering New Task Definition,
aws ecs register-task-definition --region ${AWSREGION} --cli-input-json "$NEW_TASK_DEFINITION"
Если вы хотите вызвать его этим скриптом из конвейера, вам необходимо внести эти изменения.
# task defintion dyanmic variable
TAG="${1}"
NODE_ENV="${2}"
AWSREGION="${3}"
.
.
.
, чтобы вызвать этот скрипт
./update_task.sh build_tag development us-west-2