[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 ๋ช
๋ น์ด๋ฅผ ์๋์ผ๋ก ์ณ์ค๋ค.
๊ธฐํ ์ ํ์ฌํญ ๋ฐ ๊ณ ๋ ค์ฌํญ
- exec ์ธ์ ์ idle ์ง์์๊ฐ์ 20๋ถ์ด๋ค. (์๋ฌด๊ฒ๋ ์ํ๊ณ ์์ผ๋ฉด 20๋ถ ๋ค์ ์๋ ์ข ๋ฃ)
- ๋ค์ด๊ฐ๋ ค๋ ์ปจํ ์ด๋ ์ ์์ "์ฝ๊ธฐ ์ ์ฉ ๋ฃจํธ ํ์ผ ์์คํ (readonlyRootFilesystem)"์ด ์ผ์ ธ์์ผ๋ฉด ์๋๋ค.
์ฐธ์กฐ
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/