[AWS] ECS Exec

[์›๋ณธ ๋งํฌ]

์„œ๋ฒ„ ์šด์˜์„ ํ•˜๋‹ค๋ณด๋ฉด ์‹ค์ œ ํ™˜๊ฒฝ์— ๋“ค์–ด๊ฐ€์„œ ๋””์Šคํฌ๋‚˜ ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์„ ์ฒดํฌํ•ด์•ผํ•  ์ผ์ด ์ข…์ข… ์ƒ๊ธด๋‹ค.

๊ทธ๋Ÿฐ ๋ถ€๋ถ„์—์„œ AWS ECS๋Š” ๋ถˆํŽธํ•œ ๋ถ€๋ถ„์ด ์ข€ ์žˆ๋Š” ํŽธ์ด์—ˆ๋‹ค. ์–ต์ง€๋กœ SSH ๊ตฌ๋ฉ์„ ๋šซ์–ด์„œ ์“ฐ๋ฉด ํ•  ์ˆ˜๋Š” ์žˆ๋Š”๋ฐ, ๋ณด์•ˆ์ƒ ๋ณ„๋กœ ์ข‹์ง€๋„ ์•Š๊ณ  ๋ถˆํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ž˜์„œ AWS์—์„œ ์ด๋Ÿฐ ์šฉ๋„๋กœ ๋งŒ๋“ค์–ด๋‘” ๊ฒƒ์ด AWS Exec์ด๋‹ค.
Docker Exec์—์„œ ์ด๋ฆ„์„ ๋”ฐ์˜จ ๊ฒƒ ๊ฐ™๊ณ , ๋™์ž‘ ๋ฐฉ์‹๋„ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค.




๋น„์šฉ

์ถ”๊ฐ€ ๋น„์šฉ์€ ์—†๋‹ค.
ECS Connect ์ฒ˜๋Ÿผ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์ž‘์€ ์ „์šฉ ์—์ด์ „ํŠธ๋ฅผ ๋‚ด์žฅํ•˜๋Š” ๊ตฌ์กฐ๋ผ์„œ, ๊ธฐ์กด CPU/MEM ๋ฆฌ์†Œ์Šค๋ฅผ ์•ฝ๊ฐ„ ์ ์œ ํ•˜๋Š” ๊ฒƒ์ด ์ „๋ถ€๋‹ค.




์‚ฌ์ „ ์กฐ๊ฑด

ECS Service์—๋Š” ssmmessages ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๊ธฐ์กด Task Role์—

policy๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•ด์„œ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssmmessages:CreateControlChannel",
        "ssmmessages:CreateDataChannel",
        "ssmmessages:OpenControlChannel",
        "ssmmessages:OpenDataChannel"
      ],
      "Resource": "*"
    }
  ]
}






ECS Exec ํ™œ์„ฑํ™”

์ด์ œ๋Š” ECS์— ECS Exec๋ผ๋Š” ์„น์…˜์ด ์žˆ๋‹ค.

๋ฒˆ์—ญ์ด ๊ฐœ๋–ก๊ฐ™์ด "๊ฒฝ์˜์ง„"์œผ๋กœ ๋˜์–ด์žˆ๋Š” ๊ฒƒ์ด ํ ์ด๋‹ค. ๊ธฐ๊ณ„๋ฒˆ์—ญ ๋Œ€์ถฉ ๋‚ ๋ฆฌ๊ณ  ๊ฒ€์ˆ˜๋„ ์•ˆํ•œ ๋ชจ์–‘์ด๋‹ค.
๋Œ€๋Ÿ‰ ํ•ด๊ณ ๋ฅผ ๋ช‡๋ฒˆ ํ•œ ์ดํ›„๋กœ ์ฐ๋น ๊ฐ€ ์—ฌ๊ธฐ์ €๊ธฐ์„œ ์ ์  ๋Š˜์–ด๋‚˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

์•„๋ฌดํŠผ ์ €๊ฑธ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ ์ž์ฒด๋Š” ๊ฐ„๋‹จํ•˜๋‹ค. true/false ํ”Œ๋ž˜๊ทธ๋ผ์„œ, ECS ์„œ๋น„์Šค ๋‹จ์œ„์—์„œ ๋”ธ๊น๋งŒ ํ•˜๋ฉด ์ผœ์ง„๋‹ค.

์ด๋ ‡๊ฒŒ ์ผœ์ง€๋ฉด ๋œ ๊ฒƒ์ด๋‹ค.




ECS Exec ์‚ฌ์šฉํ•˜๊ธฐ

ECS Exec์€ ๊ธฐ๋ณธ์ ์œผ๋กœ, AWS CLI๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  ecs:ExecuteCommand ๊ถŒํ•œ์„ ํ•„์š”๋กœ ํ•œ๋‹ค.

์‚ฌ์šฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

aws ecs execute-command  \
    --region $AWS_REGION \
    --cluster ํด๋Ÿฌ์Šคํ„ฐ๋ช… \
    --task ํƒœ์ŠคํฌID \
    --container ์ปจํ…Œ์ด๋„ˆ๋ช… \
    --command "/bin/bash" \
    --interactive

์ ์ ˆํžˆ ์ง‘์–ด๋„ฃ๊ณ  ์‹คํ–‰ํ•˜๋ฉด, docker exec ์ฒ˜๋Ÿผ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ•„์š”ํ•œ๋Œ€๋กœ ์ด๊ฒƒ์ €๊ฒƒ ๋“ค์–ด๊ฐ€์„œ ๋ณด๋ฉด ๋˜๋Š”๋ฐ, ๋‹น์—ฐํžˆ ๋ชจ๋“  ๊ฒƒ์ด ์ปจํ…Œ์ด๋„ˆ ๋‹จ์œ„์— ์ข…์†๋˜๋ฏ€๋กœ ์กฐ์‚ฌ ์ˆ˜๋‹จ์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๋ฉด ๊ณค๋ž€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
curl ๊ฐ™์€ ์ถ”๊ฐ€ ๋„๊ตฌ๋“ค์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์ปจํ…Œ์ด๋„ˆ์— ์•Œ์•„์„œ ์ž˜ ๋ฐ€์–ด๋„ฃ์–ด์•ผ ํ•œ๋‹ค.

๊ฐ€์žฅ ๊ฐ„ํŽธํ•œ ์ ‘์†๋ฐฉ๋ฒ•์€, ๊ทธ๋ƒฅ ECS ํƒœ์Šคํฌ์—์„œ ์ € ์šฐ์ƒ๋‹จ์˜ ์—ฐ๊ฒฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿผ ์•Œ์•„์„œ CloudShell ์—ด๊ณ  aws cli ๋ช…๋ น์–ด๋ฅผ ์ž๋™์œผ๋กœ ์ณ์ค€๋‹ค.




๊ธฐํƒ€ ์ œํ•œ์‚ฌํ•ญ ๋ฐ ๊ณ ๋ ค์‚ฌํ•ญ



์ฐธ์กฐ
https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/ecs-exec.html
https://aws.amazon.com/ko/blogs/korea/containers-new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/