ECS Exec 를 통한 컨테이너 접속

신동수·2024년 2월 28일
0

AWS

목록 보기
14/26

ECS Exec란?

  • 기본적으로 Docker 에서는 exec 명령어를 통해 컨테이너 내부에 접근을 할 수 있다. 이러한 exec 를 AWS 에서 제공을 하고 있으며 EC2, Fargate 의 Task 컨테이너 내부에 접속할 있도록 도와준다.

사전 요구 사항

  1. Task 역할에 AmazonSSMManagedInstanceCore 역할이 부여
  2. 접속하기 위한 로컬에 Session Manager 플러그인 설치

ECS 설정

% aws ecs update-service --cluster <cluster-name> --service <service-name> --enable-execute-command --profile <profile-name>

위 명령어를 수행 시 ECS 의 정보를 출력하는데 enable-execute-command가 true로 되어있는 것을 확인한다.
반대로 비활성화를 하고 싶을 경우 --enable-execute-command 부분을 --disable-execute-command로 변경한다.

ECS 접속

% aws ecs execute-command --profile <profile-name> --cluster <cluster-name> --task <task-id> --container <container-id> --command "/bin/sh" --interactive

The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.

An error occurred (InvalidParameterException) when calling the ExecuteCommand operation: The execute command failed because execute command was not enabled when the task was run or the execute command agent isn’t running. Wait and try again or run a new task with execute command enabled and try again.

Fargate의 Task 내부로 접속 시도를 하였지만 실행이 되는거 같지만 에러가 발생을 한다.


접속을 위한 태스크에서 선택 항목을 중지를 한 후에 Task 가 실행 상태로 바뀌면 위 명령어를 통해 접속을 시도해보자.


마지막으로 명령어를 입력해 보면 문제 없이 Task 내부로 접속한 것을 확인할 수 있다.
추후 컨테이너 내부에서 디버깅 시에 유용하게 사용할 수 있을 것으로 예상

profile
조금씩 성장하는 DevOps 엔지니어가 되겠습니다. 😄

0개의 댓글