Amazon ECS Anywhere를 WorkSpaces 사용하여 Amazon에서 Amazon ECS 작업 실행 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon ECS Anywhere를 WorkSpaces 사용하여 Amazon에서 Amazon ECS 작업 실행

작성자: Akash Kumar(AWS)

환경: 프로덕션

기술: 컨테이너 및 마이크로서비스, 현대화

워크로드: 기타 모든 워크로드

AWS 서비스: Amazon ECS, Amazon WorkSpaces, AWS Directory Service

요약

Amazon Elastic Container Service(Amazon ECS) Anywhere는 Amazon Web Services(AWS) 관리형 인프라 및 고객 관리형 인프라를 포함한 모든 환경에서 Amazon ECS 작업의 배포를 지원합니다. 클라우드에서 실행되고 항상 최신 상태인 완전 AWS 관리형 제어 영역을 사용하는 동안 이 작업을 수행할 수 있습니다. 

기업은 Amazon WorkSpaces 을 사용하여 컨테이너 기반 애플리케이션을 개발하는 경우가 많습니다. 이렇게 하려면 Amazon Elastic Compute Cloud(Amazon EC2) 또는 Amazon ECS 클러스터가 있는 AWS Fargate가 ECS 작업을 테스트하고 실행해야 합니다. 이제 Amazon ECS Anywhere를 사용하여 Amazon을 ECS 클러스터에 직접 외부 인스턴스 WorkSpaces 로 추가하고 작업을 직접 실행할 수 있습니다. 이렇게 하면 Amazon 에서 로컬로 ECS 클러스터로 컨테이너를 테스트할 수 있으므로 개발 시간이 단축됩니다 WorkSpaces. 컨테이너 애플리케이션을 테스트하는 데 EC2 또는 Fargate 인스턴스를 사용하는 비용을 절감할 수도 있습니다.

이 패턴은 Amazon ECS Anywhere WorkSpaces 를 사용하여 Amazon에 ECS 작업을 배포하는 방법을 보여줍니다. ECS 클러스터를 설정하고 AWS Directory Service Simple AD를 사용하여 를 시작합니다 WorkSpaces. 그런 다음 예제 ECS 작업이 NGINX에서 시작됩니다 WorkSpaces.

사전 조건 및 제한 사항

아키텍처

대상 기술 스택

  • 가상 프라이빗 클라우드(VPC)

  • Amazon ECS 클러스터

  • Amazon WorkSpaces

  • AWS Simple AD를 사용한 디렉터리 서비스

대상 아키텍처 

ECS Anywhere는 ECS 클러스터를 설정하고 Simple AD를 사용하여 를 시작합니다 WorkSpaces.

아키텍처에는 다음 서비스와 리소스가 포함되어 있습니다.

  • 사용자 지정에 퍼블릭 및 프라이빗 서브넷이 있는 ECS 클러스터 VPC

  • 의 간단한 ADVPC로 Amazon에 대한 사용자 액세스 제공 WorkSpaces

  • Simple AD를 VPC 사용하여 에서 WorkSpaces 프로비저닝된 Amazon

  • AWS 관리형 인스턴스 WorkSpaces 로 Amazon을 추가하도록 활성화된 Systems Manager

  • Amazon ECS 및 AWS Systems Manager Agent(SSM Agent) 사용, Systems Manager 및 ECS 클러스터에 Amazon WorkSpaces 추가

  • ECS 클러스터 WorkSpaces 의 에서 실행할 ECS 태스크 예제

도구

  • AWS Directory Service Simple Active Directory(Simple AD)는 Samba 4 Active Directory 호환 서버로 구동되는 독립 실행형 관리형 디렉터리입니다. Simple AD는 사용자를 관리하고 Amazon EC2 인스턴스에 안전하게 연결하는 기능을 포함하여 AWS Managed Microsoft AD에서 제공하는 기능의 하위 집합을 제공합니다.

  • Amazon Elastic Container Service(Amazon ECS)는 클러스터에서 컨테이너를 실행, 중지 및 관리하는 데 도움이 되는 빠르고 확장 가능한 컨테이너 관리 서비스입니다.

  • AWS Identity and Access Management(IAM)는 AWS 리소스에 대한 액세스를 인증하고 사용할 수 있는 권한을 부여받은 사용자를 제어하여 리소스에 대한 액세스를 안전하게 관리하는 데 도움이 됩니다.

  • AWS Systems Manager는 AWS 클라우드에서 실행되는 애플리케이션 및 인프라를 관리하는 데 도움이 됩니다. 애플리케이션 및 리소스 관리를 간소화하고, 운영 문제를 감지하고 해결하는 시간을 단축하며, 대규모로 AWS 리소스를 안전하게 관리하는 데 도움이 됩니다.

  • Amazon WorkSpaces은 사용자를 위해 가상 클라우드 기반 Microsoft Windows 또는 Amazon Linux 데스크톱을 프로비저닝하는 데 도움이 됩니다WorkSpaces. 이를 통해 하드웨어를 조달 및 배포하거나 복잡한 소프트웨어를 설치할 필요가 WorkSpaces 없습니다.

에픽

작업설명필요한 기술

ECS 클러스터를 생성하고 구성합니다.

ECS 클러스터를 생성하려면 다음 단계를 포함하여 AWS 설명서의 지침을 따릅니다.

  • 클러스터 호환성 선택 에서 네트워킹만 선택합니다. 그러면 Amazon이 ECS 클러스터의 외부 인스턴스 WorkSpace 로 지원됩니다.

  • 를 선택하여 새 를 생성합니다VPC.

클라우드 아키텍트
작업설명필요한 기술

Simple AD를 설정하고 Amazon 를 시작합니다 WorkSpaces.

새로 생성한 에 대해 Simple AD 디렉터리를 프로비저닝VPC하고 Amazon 를 시작하려면 AWS 설명서의 지침을 WorkSpaces따르세요.

클라우드 아키텍트
작업설명필요한 기술

첨부된 스크립트를 다운로드하십시오.

로컬 머신에서 첨부 섹션에 있는 ssm-trust-policy.jsonssm-activation.json 파일을 다운로드합니다.

클라우드 아키텍트

IAM 역할을 추가합니다.

비즈니스 요구 사항에 따라 환경 변수를 추가합니다.

export AWS_DEFAULT_REGION=${AWS_REGION_ID} export ROLE_NAME=${ECS_TASK_ROLE} export CLUSTER_NAME=${ECS_CLUSTER_NAME} export SERVICE_NAME=${ECS_CLUSTER_SERVICE_NAME}

다음 명령을 실행합니다.

aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://ssm-trust-policy.json
클라우드 아키텍트

IAM 역할에 mazonSSMManagedInstanceCore 정책을 추가합니다.

다음 명령을 실행합니다.

aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
클라우드 아키텍트

IAM 역할에 AmazonEC2ContainerServiceforEC2Role 정책을 추가합니다.

다음 명령을 실행합니다.

aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role
클라우드 아키텍트

IAM 역할을 확인합니다.

IAM 역할을 확인하려면 다음 명령을 실행합니다.

aws iam list-attached-role-policies --role-name $ROLE_NAME
클라우드 아키텍트

Systems Manager를 활성화합니다.

다음 명령을 실행합니다.

aws ssm create-activation --iam-role $ROLE_NAME | tee ssm-activation.json
클라우드 아키텍트
작업설명필요한 기술

에 연결합니다 WorkSpaces.

Workspaces에 연결하고 설정하려면 AWS 설명서의 지침을 따르세요.

앱 개발자

ecs-anywhere 설치 스크립트를 다운로드하십시오.

명령 프롬프트에서 다음 명령을 실행합니다.

curl -o "ecs-anywhere-install.sh" "https://amazon-ecs-agent-packages-preview.s3.us-east-1.amazonaws.com/ecs-anywhere-install.sh" && sudo chmod +x ecs-anywhere-install.sh
앱 개발자

쉘 스크립트의 무결성을 확인합니다.

(선택 사항) 다음 명령을 실행합니다.

curl -o "ecs-anywhere-install.sh.sha256" "https://amazon-ecs-agent-packages-preview.s3.us-east-1.amazonaws.com/ecs-anywhere-install.sh.sha256" && sha256sum -c ecs-anywhere-install.sh.sha256
앱 개발자

Amazon Linux에 EPEL리포지토리를 추가합니다.

Enterprise Linux(EPEL) 리포지토리용 추가 패키지를 추가하려면 명령을 실행합니다sudo amazon-linux-extras install epel -y.

앱 개발자

Amazon ECS Anywhere를 설치합니다.

다음 명령을 사용하여 설치 스크립트를 실행합니다.

sudo ./ecs-anywhere-install.sh --cluster $CLUSTER_NAME --activation-id $ACTIVATION_ID --activation-code $ACTIVATION_CODE --region $AWS_REGION

ECS 클러스터에서 인스턴스 정보를 확인합니다.

Systems Manager 및 ECS 클러스터 인스턴스 정보를 확인하고 클러스터에 WorkSpaces 추가된 를 검증하려면 로컬 시스템에서 다음 명령을 실행합니다.

aws ssm describe-instance-information" && "aws ecs list-container-instances --cluster $CLUSTER_NAME
앱 개발자
작업설명필요한 기술

태스크 실행 IAM 역할을 생성합니다.

첨부 섹션에서 task-execution-assume-role.jsonexternal-task-definition.json를 다운로드합니다. 

로컬 머신에서 다음 명령을 실행합니다.

aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json
클라우드 아키텍트

실행 역할에 정책을 추가하십시오.

다음 명령을 실행합니다.

aws iam --region $AWS_DEFAULT_REGION attach-role-policy --role-name $ECS_TASK_EXECUTION_ROLE --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
클라우드 아키텍트

작업 역할을 생성하십시오.

다음 명령을 실행합니다.

aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json
클라우드 아키텍트

클러스터에 작업 정의를 등록하십시오.

로컬 머신에서 다음 명령을 실행합니다.

aws ecs register-task-definition --cli-input-json file://external-task-definition.json
클라우드 아키텍트

작업을 실행하십시오.

로컬 머신에서 다음 명령을 실행합니다.

aws ecs run-task --cluster $CLUSTER_NAME --launch-type EXTERNAL --task-definition nginx
클라우드 아키텍트

작업 실행 상태를 확인합니다.

작업 ID를 가져오려면 다음 명령을 실행합니다.

export TEST_TASKID=$(aws ecs list-tasks --cluster $CLUSTER_NAME | jq -r '.taskArns[0]')

작업 ID로 다음 명령을 실행합니다.

aws ecs describe-tasks --cluster $CLUSTER_NAME --tasks ${TEST_TASKID}
클라우드 아키텍트

에서 태스크를 확인합니다 WorkSpace.

이 에서 실행 NGINX 중인지 확인하려면 명령을 WorkSpace실행합니다 curl http://localhost:8080.

앱 개발자

관련 리소스

첨부

이 문서와 관련된 추가 콘텐츠에 액세스하려면 attachment.zip 파일의 압축을 풉니다.