你需要两个步骤
但我希望将 ECR 中的 docker 映像路径动态传递给相同的路径。
以下脚本将完全满足您的需求,您只需定义或替换这些 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