기존 AWS Fargate에서 ECS Exec 기능을 활성화하고 컨테이너 액세스를 수행하려면

전제 조건


Fargate를 사용하는 서비스가 이미 있다는 전제 조건입니다.
새로운 서비스는 AWS 공식 블로그Amazon ECS Exec를 통해 AWS Fargate, Amazon EC2의 컨테이너에 액세스에서 매우 참고 가치가 있다.
또한 AWS CLI가 필요합니다.다음 버전 1 또는 2의 최신 버전을 사용합니다.
AWS CLI 설치, 업데이트, 제거 - AWS Command Line Interface

ECS Exec 시작 전 준비


ECS 작업 역할에 대한 정책 설정


ECS 작업 롤오버 IAM 정책
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*"
        }
    ]
}
기존 IAM 스크롤 막대를 사용하는 경우 이 스크롤 막대에 ↑를 추가합니다.
스크롤 막대를 사용하지 않은 경우 다음 정의를 참조하십시오.
임무용 IAM 역할 - Amazon Elastic Contaainer Service

기존 서비스에서 ECS Exec 기능 활성화


여기서는 AWS CLI 를 사용합니다.
$ aws ecs update-service \
    --cluster example-cluster \
    --service example-service \
    --enable-execute-command
기존 서비스에서 ECS Exec 옵션만 추가하려면 위의 절차에 따라--enable-execute-command 옵션을 제공합니다.
CLI 결과"enableExecuteCommand": true가 되면 OK
{
    "service": {
        "serviceArn": "arn:aws:ecs:us-west-2:XXXXX:service/xxx",
        "serviceName": "xxx",

...skipping...
        "enableExecuteCommand": true
    }
}
상기 변경을 확인한 후 기존 서비스의 운용 방법에 따라 임무를 시작한다.
AWS 문서의 경우 다음을 참조하십시오.
Amazon ECS 작업 스케줄링 - Amazon Elastic Contaainer Service

ECS Exec를 사용하여 Fargate 컨테이너에 들어가기


다음execute-command을 수행합니다.
$ aws ecs execute-command \
    --cluster example-clustr \
    --task XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
    --container xxx \
    --interactive \
    --command "/bin/sh"
ECS 작업에서 여러 컨테이너를 사용하는 경우 --container 컨테이너에 들어갈 컨테이너의 이름을 선택합니다.
다음 항목이 성공적으로 표시됩니다.
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.

Starting session with SessionId: ecs-execute-command-XXXXXXXXXXXXXXXXX
/ #

뒷처리


컨테이너에 들어가지 않으려면 다음 명령을 사용하여 ECS Exec 기능을 비활성화할 수 있습니다.
$ aws ecs update-service \
    --cluster example-cluster \
    --service example-service \
    --disable-execute-command
{
    "service": {
        "serviceArn": "arn:aws:ecs:us-west-2:XXXXX:service/xxx",
        "serviceName": "xxx",

...skipping...
        "enableExecuteCommand": false
    }
}
"enableExecuteCommand": false는 ECS Exec 기능이 무효라고 판단했다.

참고 자료

  • New – Amazon ECS Exec를 통해 AWS Fargate, Amazon EC2의 컨테이너 | Amazon 웹 서비스 블로그에 액세스
  • [업데이트] 실행 중인 컨테이너에 들어가서 명령을 수행할 수 있는 ECS Exec가 공개되었습니다.
  • 좋은 웹페이지 즐겨찾기