본문 바로가기
CLOUD/AWS

AWS ECS ec2/fargate 컨테이너에 접속

by Rainbound-IT 2023. 6. 8.
반응형

목차

     

     

     
     

     

    ecs fargate로 container 올리면 접속하는 법을 예전에 찾다가 봤었을때 엄청 번거로웠던거 같은데

    다시 찾아보니 엄청 간단했다.

    (container 내부에 뭐 설치하고 client에서 뭐 설치하고 등등이 없다)

     

    ECS Exec 사용을 위한 사전 조건

    ECS Exec을 사용하기 전에 다음 태스크를 완료했는지 확인합니다.

    • AWS CLI를 설치하고 구성합니다. 자세한 정보는 AWS CLI을 참조하세요.
    • AWS CLI에 대한 Session Manager 플러그인을 설치합니다. 자세한 내용은 AWS CLI에 대한 Session Manager 플러그인 설치를 참조하세요.
    • ECS Exec은 작업이 Amazon EC2 또는 AWS Fargate에 호스팅되는지 여부에 따라 버전 요구 사항이 있습니다.
      • Amazon EC2를 사용하는 경우 2021년 1월 20일 이후에 출시된 Amazon ECS 최적화 AMI를 에이전트 버전 1.50.2 이상으로 사용해야 합니다. 자세한 내용은 Amazon ECS 최적화 AMI를 참조하세요.
      • AWS Fargate을(를) 사용하는 경우 플랫폼 버전 1.4.0 이상(Linux) 또는 1.0.0(Windows)을(를) 사용해야 합니다. 자세한 내용은 AWS Fargate 플랫폼 버전을 참조하세요.
     

    1. AWS SSM 설치

    Windows

    https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPluginSetup.exe

     

    Linux

    sudo yum install -y https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm

     

     

    우분투

    curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb" -o "session-manager-plugin.deb"
    sudo dpkg -i session-manager-plugin.deb

    MAC

    curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"

     

     

     

    설치확인

    아래 명령어를 입력하여 확인

    session-manager-plugin

    이렇게 뜨면 설치가 된겁니다.

     

     

     

     

     

     

     

     

     

     

     

    2. ECS Task Role 설정

     

    태스크 실행역할이 아닌 태스크 열할에 주면 됩니다.

     

    아래 권한을 추가해줍니다.

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

     

     

     

     

     

     

     

    3. 서비스 생성

    --enable-execute-command \

    을 추가하면 됩니다.

    aws ecs create-service \
        --cluster cluster-name \
        --task-definition task-definition-name \
        --enable-execute-command \
        --service-name service-name \
        --desired-count 1

     

    사용준비 확인

    aws ecs describe-tasks \
        --cluster cluster-name \
        --tasks task-id

     

     

     

     

    4. aws exec 명령 실행

    aws ecs execute-command --cluster cluster-name \
        --task task-id \
        --container container-name \
        --interactive \
        --command "/bin/sh"

     

     

     

    5. ECS Exec 사용에 대한 고려 사항

    실행이 되려면 몇가지 고려사항이 있습니다.

     

     

    이 항목에서는 ECS Exec 사용과 관련된 다음 측면을 익혀야 합니다.

    • ECS Exec은 다음 인프라에서 실행되는 작업에 대해 지원됩니다.
      • 모든 Amazon ECS에 최적화된 AMI의 Amazon EC2에 있는 리눅스 컨테이너 (보틀로켓 포함)
      • 외부 인스턴스의 Linux 및 Windows 컨테이너 (ECS Anywhere)
      • AWSFargate 리눅스 및 윈도우 컨테이너
      • 다음 Windows Amazon ECS 최적화 AMI (컨테이너 에이전트 버전 이상) 의 Amazon EC2 에 있는 Windows 컨테이너 (컨테이너 에이전트 버전1.56 이상):
        • Amazon ECS 최적화 Windows Server 2022 Full AMI
        • Amazon ECS 최적화 Windows Server 2022 Core AMI
        • Amazon ECS 최적화 Windows Server 2019 Full AMI
        • Amazon ECS 최적화 Windows Server 2019 Core AMI
        • Amazon ECS 최적화 Windows Server 20H2 Core AMI
    • ECS Exec은 현재 AWS Management Console 사용을 지원하지 않습니다.
    • ECS Exec은 현재 오토 스케일링 용량 공급자를 사용하여 시작된 태스크에 대해 지원되지 않습니다.
    • Amazon ECS와 인터페이스 Amazon VPC 엔드포인트를 사용하는 경우 Systems Manager Session Manager용 인터페이스 Amazon VPC 엔드포인트를 생성해야 합니다. Systems Manager Session Manager VPC 엔드포인트에 대한 자세한 정보는 AWS Systems Manager 사용 설명서의 AWS PrivateLink를 사용하여 Session Manager에 대한 VPC 엔드포인트 설정을 참조하세요.
    • Amazon ECS와 함께 인터페이스 Amazon VPC 엔드포인트를 사용하고 있으며 암호화에 AWS KMS key를 사용하는 경우, AWS KMS key에 대한 인터페이스 Amazon VPC 엔드포인트를 생성해야 합니다. 자세한 내용은 AWS Key Management Service 개발자 안내서에서 VPC 엔드포인트 구성을 통해 AWS KMS key에 연결을 참조하세요.
    • 기존 작업에 대해 ECS Exec을 켤 수 없습니다. 새 작업에 대해서만 켤 수 있습니다.
    • 사용자가 ECS Exec을 사용하여 컨테이너에서 명령을 실행하면 이러한 명령은 root 사용자로 실행됩니다. SSM 에이전트와 하위 프로세스는 컨테이너에 대한 사용자 ID를 지정하는 경우에도 루트로 실행됩니다.
    • ECS Exec 세션의 유휴 제한 시간은 20분입니다. 이 값은 변경할 수 없습니다.
    • SSM 에이전트는 필요한 디렉터리 및 파일을 생성하기 위해 컨테이너 파일 시스템을 기록할 수 있어야 합니다. 따라서 readonlyRootFilesystem 태스크 정의 파라미터 또는 다른 메서드를 사용해 루트 파일 시스템을 읽기 전용으로 만드는 것은 지원되지 않습니다.
    • 사용자는 컨테이너 컨텍스트 내에서 사용할 수 있는 모든 명령을 실행할 수 있습니다. 컨테이너의 주 프로세스 종료, 명령 에이전트 종료 및 종속성 삭제와 같은 태스크를 수행하면 분리된 좀비 프로세스가 발생할 수 있습니다. 좀비 프로세스를 정리하려면 initProcessEnabled 플래그를 태스크 정의에 추가하는 것이 좋습니다.
    • execute-command 작업 외부에서 SSM 세션을 시작하는 것은 가능하지만, 세션이 로깅되지 않고 세션 제한에 대해 계산됩니다. IAM 정책을 사용하여 ssm:start-session 태스크를 거부함으로써 이 액세스를 제한하는 것이 좋습니다. 자세한 내용은 세션 시작 작업에 대한 액세스 제한 섹션을 참조하세요.
    • ECS Exec은 CPU와 메모리를 사용합니다. 태스크 정의에서 CPU 및 메모리 리소스 할당을 지정할 때 이를 수용하고 싶을 것입니다.
    • AWS CLI 버전 1.22.3 이상 또는 AWS CLI 버전 2.3.6 이상을 사용해야 합니다. AWS CLI 업데이트 방법에 대한 자세한 내용은 AWS Command Line Interface 버전 2 사용 설명서의 최신 버전의 AWS CLI 설치 또는 업데이트를 참조하세요.
    • run-task을(를) 사용하여 비동기식 배치로 관리형 크기 조정을 사용하는 클러스터에서 작업을 시작하는 경우(인스턴스가 없는 작업 시작) ECS Exec을 사용할 수 없습니다.
    • Microsoft Nano Server 컨테이너에 대해서는 ECS Exec을 실행할 수 없습니다. Nano Server 컨테이너에 대한 자세한 내용은 Docker 웹 사이트의 Nano Server를 참조하세요.

     

     

     

     

    Reference

     

    Session Manaer

    https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html#install-plugin-verify

     

    용Session Manager 플러그인 설치AWS CLI - AWS Systems Manager

    로그를 저장하는 데 지정된 기본 디렉터리를 사용하는 경우 sudo를 사용하여 세션 명령을 실행하거나 플러그인이 설치된 디렉터리에 전체 읽기 및 쓰기 권한을 부여해야 합니다. 이러한 제한 사

    docs.aws.amazon.com

    ECS exec 사용 docs

    https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/ecs-exec.html

     

    디버깅에 Amazon ECS Exec 사용 - Amazon Elastic Container Service

    왜냐하면 execute-command API 작업에는 요청의 작업 및 클러스터 리소스만 포함되며 클러스터 및 태스크 태그만 평가되기 때문입니다.

    docs.aws.amazon.com

     

     

    https://nyyang.tistory.com/148

     

    [ECS] ECS Exec를 사용하여 ECS Fargate 컨테이너에 접속하기

    Fargate는 기본적으로 AWS에서 서버를 관리하기 때문에 운영 관리에 대한 부분을 최소화할 수 있다. 하지만 컨테이너에 Issue가 발생했다거나, 디버깅을 위해 컨테이너에 접속하고 싶을 경우에 상당

    nyyang.tistory.com

     

     

    https://towardsthecloud.com/amazon-ecs-execute-command-access-container

     

    Use AWS ECS execute command to access a container on AWS Fargate and EC2

    Here are the steps to access an Amazon ECS container using aws ecs execute-command on the AWS CLI.

    towardsthecloud.com

     

    aws blog exec

    https://aws.amazon.com/ko/blogs/korea/containers-new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/

     

    Amazon ECS Exec를 통한 AWS Fargate 및 Amazon EC2 컨테이너 접근하기 | Amazon Web Services

    AWS는 개발자 및 운영자를 포함한 모든 Amazon ECS 사용자가 Amazon EC2 또는 AWS Fargate에 배포된 태스크 내에서 실행되는 컨테이너에서 exec 명령을 시작할 수 있습니다. ECS Exec라는 기능을 통해 사용자

    aws.amazon.com

     

    반응형

    댓글