반응형
목차
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
ECS exec 사용 docs
https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/ecs-exec.html
https://nyyang.tistory.com/148
https://towardsthecloud.com/amazon-ecs-execute-command-access-container
aws blog exec
끝
반응형
'CLOUD > AWS' 카테고리의 다른 글
오류페이지가 404로 나오고 html 이상한걸로 나올때 - cloudfront 사용 (0) | 2023.06.20 |
---|---|
aws deploy create-deployment 에러 - The AppSpec file cannot be located in the specified S3 bucket... (0) | 2023.06.09 |
pem키 잃어버린 ebs 사용하고 싶을때 (0) | 2023.05.31 |
AWS cloudfront 사용자지정헤더 못쓰는 것들 (0) | 2023.05.25 |
AWS cli 출력방식 변경하기 (0) | 2023.05.22 |
댓글