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

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

Amazon ECS Anywhere를 WorkSpaces 사용하여 Amazon에서 Amazon ECS 작업을 실행합니다.

작성자: Akash Kumar(AWS)

환경: 프로덕션

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

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

AWS 서비스: 아마존 ECS, 아마존 WorkSpaces, AWS 디렉터리 서비스

요약

Amazon Elastic Container Service(Amazon ECS) Anywhere는 Amazon Web Services(AWS) 관리 인프라 및 고객 관리형 인프라를 비롯한 모든 환경에서 Amazon ECS 작업 배포를 지원합니다. 클라우드에서 실행되고 항상 최신 상태로 유지되는 완전한 AWS 관리형 컨트롤 플레인을 사용하면서 이 작업을 수행할 수 있습니다. 

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

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

사전 조건 및 제한 사항

  • 활성 상태의 AWS 계정.

  • AWS Command Line Interface(AWS CLI)

  • 머신에 구성된 AWS 보안 인증

아키텍처

대상 기술 스택

  • Virtual Private Cloud(VPC)

  • Amazon ECS 클러스터

  • 아마존 WorkSpaces

  • AWS Directory Service와 Simple AD

대상 아키텍처 

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

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

  • 사용자에게 Amazon에 대한 액세스를 제공하는 VPC의 Simple AD WorkSpaces

  • Amazon은 WorkSpaces Simple AD를 사용하여 VPC에 프로비저닝했습니다.

  • 아마존을 관리형 인스턴스로 추가하기 위해 AWS Systems WorkSpaces Manager가 활성화되었습니다.

  • Amazon ECS와 AWS Systems Manager 에이전트 (SSM 에이전트) 를 사용하여 Amazon은 Systems Manager와 ECS 클러스터에 WorkSpaces 추가했습니다.

  • ECS 클러스터에서 실행할 ECS 작업의 예 WorkSpaces

도구

  • 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 리소스를 규모에 따라 안전하게 관리하는 데 도움이 됩니다.

  • WorkSpacesAmazon은 사용자를 위해 가상 클라우드 기반 Microsoft Windows 또는 Amazon Linux 데스크톱 (일명) 을 프로비저닝할 수 있도록 지원합니다. WorkSpaces WorkSpaces 하드웨어를 조달 및 배포하거나 복잡한 소프트웨어를 설치할 필요가 없습니다.

에픽

작업설명필요한 기술

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

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

  • 클러스터 호환성 선택에서 네트워킹 전용을 선택합니다. 그러면 WorkSpace Amazon을 ECS 클러스터의 외부 인스턴스로 지원할 수 있습니다.

  • 새 VPC 생성을 선택합니다.

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

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

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

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

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

로컬 머신에서 첨부 섹션에 있는 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
클라우드 아키텍트

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

다음 명령을 실행합니다.

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

Amazon EC2 EC2 ContainerServicefor 역할 정책을 IAM 역할에 추가합니다.

다음 명령을 실행합니다.

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 파일의 압축을 풉니다.