Aws-cli: рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдИрд╕реАрдПрд╕ - рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдХреИрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рджрд┐рд╕ре░ 2017  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: aws/aws-cli

рдХреНрдпрд╛ рдИрд╕реАрдПрд╕ рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдирдпрд╛ рд╕рдВрд╢реЛрдзрди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд╕реАрдбреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╛ рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЧрд╛рдпрдм рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдпрд╣ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рдмрдВрдзрди рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

https://github.com/aws/amazon-ecs-cli/issues/91 рджреЗрдЦреЗрдВ (рд▓реЗрдХрд┐рди рдореИрдВ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдзрдиреНрдпрд╡рд╛рдж @ 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}```

рд╕рднреА 18 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рдореНрдо, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ 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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдБрдЪ рдХреА рдФрд░ рдРрд╕реА рдХреЛрдИ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдирд╣реАрдВ рд╣реИ:


Screen Shot 2019-08-13 at 10 31 13 AM


рдореИрдВрдиреЗ рдпрд╣ рдЯрд┐рдХрдЯ рдмрдирд╛рдпрд╛ рд╣реИ: 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'

рдореИрдВрдиреЗ рдлрд╛рд░рдЧреЗрдЯ рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИред

https://github.com/awslabs/fargatecli

рдореИрдВрдиреЗ рдлрд╛рд░рдЧреЗрдЯ рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИред

https://github.com/awslabs/fargatecli

рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж - рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрдЦрд╛ рдерд╛ред рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реЙрд▓реНрдпреВрдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ рддреЛ 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 рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕реЗ рдЖрдЬрдорд╛рдКрдВрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

motilevy picture motilevy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alexejk picture alexejk  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ypant picture ypant  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

matt-sexton picture matt-sexton  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ehammond picture ehammond  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ