рдХреНрдпрд╛ рдИрд╕реАрдПрд╕ рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдирдпрд╛ рд╕рдВрд╢реЛрдзрди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд╕реАрдбреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╛ рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЧрд╛рдпрдм рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдпрд╣ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рдмрдВрдзрди рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
https://github.com/aws/amazon-ecs-cli/issues/91 рджреЗрдЦреЗрдВ (рд▓реЗрдХрд┐рди рдореИрдВ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)
рд╣рдореНрдо, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ README рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ register-task-definition
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдирдпрд╛ рд╕рдВрд╢реЛрдзрди рд╣реЛрдЧрд╛ред https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html#output рд╕реЗ :
revision -> (integer)
The revision of the task in a particular family. The revision is
a version number of a task definition in a family. When you reg-
ister a task definition for the first time, the revision is 1 ;
each time you register a new revision of a task definition in
the same family, the revision value always increases by one
(even if you have deregistered previous revisions in this fam-
ily).
рдореИрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╢реЙрдЯ рджреВрдВрдЧрд╛ред
рдзрдиреНрдпрд╡рд╛рдж, рд╢реЛрд░ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ update-service
рдЬреИрд╕реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдПрдХ рдЕрд▓рдЧ рдХрдорд╛рдВрдб рд╣реЛрдЧрд╛
рд╣реИрд▓реЛ @Extraurst рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИред
рд╣рд╛рдп @menocomp @jamesls рдЙрддреНрддрд░ рджреЗрдЦреЗрдВред рдмрд╕ register-task-definition
рдФрд░ рдпрджрд┐ рдкрд░рд┐рд╡рд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ рддреЛ рдпрд╣ рдПрдХ рдирдпрд╛ рд╕рдВрд╢реЛрдзрди рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛
register-task-definition
рдХреЗрд╡рд▓ рд╕рдВрд╢реЛрдзрди рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрддреЛрд╖рдЬрдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
register-task-definition
рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рд╕реНрдХ рдбреЗрдлрд┐рдирд┐рд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╛ JSON рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХрд┐ describe-task-definition
рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рдмреНрджрдХреЛрд╢ рдкрд░рдд _рдФрд░_ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ register-task-definition
рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдорд╛рдиреНрдп рд╣реИрдВред
рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рд╕рдорддрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:
$ aws ecs register-task-definition --family name --cli-input-json file:///tmp/task-definition.json
Parameter validation failed:
Unknown parameter in input: "taskDefinitionArn", must be one of: family, taskRoleArn, executionRoleArn, networkMode, containerDefinitions, volumes, placementConstraints, requiresCompatibilities, cpu, memory, tags, pidMode, ipcMode, proxyConfiguration
Unknown parameter in input: "revision", must be one of: family, taskRoleArn, executionRoleArn, networkMode, containerDefinitions, volumes, placementConstraints, requiresCompatibilities, cpu, memory, tags, pidMode, ipcMode, proxyConfiguration
Unknown parameter in input: "status", must be one of: family, taskRoleArn, executionRoleArn, networkMode, containerDefinitions, volumes, placementConstraints, requiresCompatibilities, cpu, memory, tags, pidMode, ipcMode, proxyConfiguration
Unknown parameter in input: "requiresAttributes", must be one of: family, taskRoleArn, executionRoleArn, networkMode, containerDefinitions, volumes, placementConstraints, requiresCompatibilities, cpu, memory, tags, pidMode, ipcMode, proxyConfiguration
Unknown parameter in input: "compatibilities", must be one of: family, taskRoleArn, executionRoleArn, networkMode, containerDefinitions, volumes, placementConstraints, requiresCompatibilities, cpu, memory, tags, pidMode, ipcMode, proxyConfiguration
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╕реАрдЖрдИ/рд╕реАрдбреА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдИрд╕реАрдПрд╕ рдЯрд╛рд╕реНрдХ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд▓рдЖрдИ рд╕реАрдзреЗ рдЖрдЧреЗ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреНрд░рд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡реЗрдм рдкрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд╛рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рд╡рд╛рд╣ describe-task-definition
рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдХрдВрдЯреЗрдирд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, image
рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓рдирд╛ рдФрд░ рдЗрд╕реЗ register-task-definition --family $FAMILY --container-definitions $UPDATED_DEFINITION
рд╕рд╛рде рд╡рд╛рдкрд╕ рдзрдХреНрдХрд╛ рджреЗрдирд╛ рд╣реИред
рдлрд╛рд░рдЧреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ - рдХрд╛рд░реНрдп рдХреЛ рдЙрд╕реА JSON рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдФрд░ рдореБрдЭреЗ рдореВрд▓ рд░реВрдк рд╕реЗ describe-task
JSON рд╕реЗ register-task-definition
рд░реВрдк рдореЗрдВ рд╕рднреА рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдорд╛рдиреЛрдВ рдХреЛ рд░рдЦрдирд╛ рдкрдбрд╝рд╛ред
рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди JSON рдХреЛ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдПрдВ @shatil рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИрдВред рдЕрдВрдд рдореЗрдВ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ:
TASK_DEFINITION=$(aws ecs describe-task-definition --task-definition "$TASK_FAMILY" --region "us-east-1")
NEW_TASK_DEFINTIION=$(echo $TASK_DEFINITION | jq --arg IMAGE "$NEW_IMAGE" '.taskDefinition | .containerDefinitions[0].image = $IMAGE | del(.taskDefinitionArn) | del(.revision) | del(.status) | del(.requiresAttributes) | del(.compatibilities)')
aws ecs register-task-definition --region "us-east-1" --cli-input-json "$NEW_TASK_DEFINTIION"
рдзрдиреНрдпрд╡рд╛рдж @ m-radzikowski рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ "рдирд╡реАрдирддрдо" рдХреЗ рдмрдЬрд╛рдп рдЫрд╡рд┐ рдЯреИрдЧ рдХреЗ рд░реВрдк рдореЗрдВ git рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ
```
рд╕реЗрдЯ-рдИ
ECR_IMAGE="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_REPO_NAME}:${CODEBUILD_RESOLVED_SOURCE_VERSION}"
TASK_DEFINITION=$(aws ecs рд╡рд░реНрдгрди-рдХрд╛рд░реНрдп-рдкрд░рд┐рднрд╛рд╖рд╛ --рдХрд╛рд░реНрдп-рдкрд░рд┐рднрд╛рд╖рд╛ "$TASK_FAMILY" --region "$AWS_DEFAULT_REGION")
NEW_TASK_DEFINTIION=$(echo $TASK_DEFINITION | jq --arg IMAGE "$ECR_IMAGE" '.taskDefinition | .containerDefinitions[0].image = $IMAGE | del(.taskDefinitionArn) | del(.revision) | del(.status) | del(.requiresAttributes) | del(.compatibilities)')
NEW_TASK_INFO=$(aws ecs рд░рдЬрд┐рд╕реНрдЯрд░-рдХрд╛рд░реНрдп-рдкрд░рд┐рднрд╛рд╖рд╛ --region "$AWS_DEFAULT_REGION" --cli-input-json "$NEW_TASK_DEFINTIION")
NEW_REVISION=$(рдЧреВрдВрдЬ $NEW_TASK_INFO | jq '.taskDefinition.revision')
aws ecs update-service --cluster ${ECS_CLUSTER} --service ${SERVICE_NAME} --task-definition ${TASK_FAMILY}:${NEW_REVISION}```
рдЗрд╕ рдкрд░ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИ? рд╣рдо рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рдВрд╢реЛрдзрди рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛрдЧрд╛:
aws ecs update-task-definition --task-definition "$task_fam" --revision "ecr/name:tag"
рддреЛ рд╣рд╛рдБ рдореИрдВ рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдБ:
_ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдИрд╕реАрдПрд╕ рдЕрджреНрдпрддрди-рдХрд╛рд░реНрдп-рдкрд░рд┐рднрд╛рд╖рд╛ _
рдореИрдВрдиреЗ aws ecs help
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдБрдЪ рдХреА рдФрд░ рдРрд╕реА рдХреЛрдИ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдирд╣реАрдВ рд╣реИ:
рдореИрдВрдиреЗ рдпрд╣ рдЯрд┐рдХрдЯ рдмрдирд╛рдпрд╛ рд╣реИ: https://github.com/aws/aws-cli/issues/4401
рдПрдбрдмреНрд▓реНрдпреВрдПрд╕-рдХреНрд▓реА рд╕рдорд░реНрдерди, рдЕрдЧрд░ рдЖрдк рд╣рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЬреАрдердм рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реИ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП
рдЖрдкрдХреЛ jq
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ:
aws describe-task-definition --task-definition myapp \
--query 'taskDefinition.{containerDefinitions:containerDefinitions}' \
> /tmp/task-definitions.json
Fargate рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓рдВрдмреА рдХрдорд╛рдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ:
aws ecs register-task-definition \
--family myapp \
--cli-input-json file:///tmp/task.json \
--requires-compatibilities FARGATE \
--network-mode awsvpc \
--cpu 1024 --memory 2048 \
--task-role-arn <arn> --execution-role-arn <arn>
рдПрдХ рдлрд╛рд░рдЧреЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ ecs cli рдФрд░ --tags рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╣реИрдХ рдорд┐рд▓рд╛ рд╣реИред
рдЖрдк рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдбрд╛рд▓рддреЗ рд╣реИрдВ, рд╡рд╣ рд╕рдВрд╢реЛрдзрди рдХреЛ рдЕрдЧрд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░ рджреЗрдЧрд╛ред
ecs-cli compose --project-name PROJECT-NAME --file DOCKER_COMPOSE_FILE --ecs-params ECS_PARAMS_FILE --region REGION create --launch-type FARGATE --tags 'TaskDefinition=TASK:VERSION_NUMBER'
рдореИрдВрдиреЗ рдлрд╛рд░рдЧреЗрдЯ рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдлрд╛рд░рдЧреЗрдЯ рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж - рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрдЦрд╛ рдерд╛ред рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реЙрд▓реНрдпреВрдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ рддреЛ fargatecli рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдЖрдкрдХреЛ
jq
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ:aws describe-task-definition --task-definition myapp \ --query 'taskDefinition.{containerDefinitions:containerDefinitions}' \ > /tmp/task-definitions.json
Fargate рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓рдВрдмреА рдХрдорд╛рдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ:
aws ecs register-task-definition \ --family myapp \ --cli-input-json file:///tmp/task.json \ --requires-compatibilities FARGATE \ --network-mode awsvpc \ --cpu 1024 --memory 2048 \ --task-role-arn <arn> --execution-role-arn <arn>
рдпрд╣рд╛рдБ рдПрдХ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ JQ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
NEW_TASK_DEFINTION=\$(aws ecs describe-task-definition --task-definition {task def}
--query '{ containerDefinitions: taskDefinition.containerDefinitions,
family: taskDefinition.family,
taskRoleArn: taskDefinition.taskRoleArn,
executionRoleArn: taskDefinition.executionRoleArn,
networkMode: taskDefinition.networkMode,
volumes: taskDefinition.volumes,
placementConstraints: taskDefinition.placementConstraints,
requiresCompatibilities: taskDefinition.requiresCompatibilities,
cpu: taskDefinition.cpu,
memory: taskDefinition.memory}')
aws ecs register-task-definition --cli-input-json "$NEW_TASK_DEFINTION"
@sashokbg рдХреЗ рдЙрддреНрддрд░ рдореЗрдВ
рдпрджрд┐ рдЖрдк рдирд╡реАрдирддрдо рдЫрд╡рд┐ ("рдирд╡реАрдирддрдо" рдХреЗ рд╕рд╛рде рдЯреИрдЧ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдИрд╕реАрдПрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
aws ecs update-service --cluster your-cluster-name --service your-service-name --force-new-deployment
--force-new-deployment
рдкрд░рдо рдЪрд╛рд▓ рдХрд░рддрд╛ рд╣реИред
@oalagtash рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕реЗ рдЖрдЬрдорд╛рдКрдВрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдзрдиреНрдпрд╡рд╛рдж @ m-radzikowski рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ "рдирд╡реАрдирддрдо" рдХреЗ рдмрдЬрд╛рдп рдЫрд╡рд┐ рдЯреИрдЧ рдХреЗ рд░реВрдк рдореЗрдВ git рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ
```
!/рдмрд┐рди/рдмрд╛рд╢
рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдФрд░ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреБрд░рд╛рдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдирдпрд╛ рдИрд╕реАрдЖрд░ рдЫрд╡рд┐ рдкрддрд╛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдЬрд┐рдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рд╣рдо рдирдИ рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рднреЗрдЬрддреЗ рд╣реИрдВ, рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдирдИ рд╕рдВрд╢реЛрдзрди рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реЗрд╡рд╛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ
рд╕реЗрдЯ-рдИ
ECR_IMAGE="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_REPO_NAME}:${CODEBUILD_RESOLVED_SOURCE_VERSION}"
TASK_DEFINITION=$(aws ecs рд╡рд░реНрдгрди-рдХрд╛рд░реНрдп-рдкрд░рд┐рднрд╛рд╖рд╛ --рдХрд╛рд░реНрдп-рдкрд░рд┐рднрд╛рд╖рд╛ "$TASK_FAMILY" --region "$AWS_DEFAULT_REGION")
NEW_TASK_DEFINTIION=$(echo $TASK_DEFINITION | jq --arg IMAGE "$ECR_IMAGE" '.taskDefinition | .containerDefinitions[0].image = $IMAGE | del(.taskDefinitionArn) | del(.revision) | del(.status) | del(.requiresAttributes) | del(.compatibilities)')
NEW_TASK_INFO=$(aws ecs рд░рдЬрд┐рд╕реНрдЯрд░-рдХрд╛рд░реНрдп-рдкрд░рд┐рднрд╛рд╖рд╛ --region "$AWS_DEFAULT_REGION" --cli-input-json "$NEW_TASK_DEFINTIION")
NEW_REVISION=$(рдЧреВрдВрдЬ $NEW_TASK_INFO | jq '.taskDefinition.revision')
aws ecs update-service --cluster ${ECS_CLUSTER} --service ${SERVICE_NAME} --task-definition ${TASK_FAMILY}:${NEW_REVISION}```