AWS CLI를 사용하여 첫 번째 Express Mode 서비스 생성 - Amazon Elastic Container Service

AWS CLI를 사용하여 첫 번째 Express Mode 서비스 생성

이 자습서에서는 AWS AWS CLI를 사용하여 Express Mode 서비스 애플리케이션을 생성하는 방법을 보여줍니다. Express Mode 서비스의 핵심 기능을 보여주는 간단한 웹 애플리케이션을 배포합니다.

사전 조건

시작하기 전에 다음을 갖추었는지 확인하세요.

  • 적절한 권한이 있는 AWS 계정

  • AWS AWS CLI가 설치 및 구성됨

  • Amazon ECR 또는 프라이빗 레지스트리에 저장된 컨테이너 이미지

1단계: IAM 역할 생성

Express Mode 서비스에는 두 개의 IAM 역할이 필요합니다. 태스크 실행 역할을 사용하면 Amazon ECS가 컨테이너 이미지를 가져오고 사용자를 대신해 로그를 쓸 수 있습니다. 다음 정책을 사용하여 태스크 실행 역할 및 인프라 역할을 생성합니다.

#Create the roles with ECS trust policies aws iam create-role --role-name ecsTaskExecutionRole \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole", } ] }' aws iam create-role --role-name ecsInfrastructureRoleForExpressServices \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessInfrastructureForECSExpressServices", "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
#Attach the AWS managed policies aws iam attach-role-policy --role-name ecsTaskExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy aws iam attach-role-policy --role-name ecsInfrastructureRoleForExpressServices \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRoleforExpressGatewayServices

자세한 내용은 Amazon ECS 태스크 실행 IAM 역할 섹션을 참조하세요.

2단계: 첫 번째 Express Mode 서비스 애플리케이션 생성

최소 필수 파라미터를 사용하여 Express Mode 서비스 애플리케이션을 생성합니다.

aws ecs create-express-gateway-service \ --image "public.ecr.aws/nginx/nginx:latest" \ --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --monitor-resources

이 명령은 다음을 사용하여 Express Mode 서비스 애플리케이션을 생성합니다.

  • 이미지 이름에서 생성된 고유한 서비스 이름

  • vCPU 1개 및 2GB 메모리

  • HTTPS 트래픽용 포트 80

  • CPU 사용률에 기반한 오토 스케일링

  • 기본 VPC 및 퍼블릭 서브넷의 인터넷 대면 Application Load Balancer

  • servicename.ecs.region.on.aws 형식의 이 서비스에 고유한 URL

명령은 리소스가 프로비저닝될 때 지속적으로 모니터링하고 상태를 반환합니다. 서비스 배포가 완료되면 애플리케이션 URL이 트래픽을 수신할 준비가 된 것입니다. 모니터링을 중단하면 서비스 ARN 및 URL을 포함하여 생성된 서비스에 대한 정보가 반환됩니다.

{ "service": { "cluster": "arn:aws:ecs:region:123456789012:cluster/default", "serviceName": "nginx-1234", "serviceArn": "arn:aws:ecs:region:123456789012:service/default/nginx-1234", "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices", "status": { "statusCode": "ACTIVE" }, "createdAt": "UNIXTIMESTAMP" } }

3단계: 사용자 지정 설정을 사용하여 Express Mode 서비스 애플리케이션 생성

추가 파라미터를 지정하여 Express Mode 서비스 애플리케이션을 사용자 지정할 수 있습니다.

aws ecs create-express-gateway-service \ --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --primary-container \ ‘{“image”=“123456789012.dkr.ecr.region.amazonaws.com/my-app:latest", \ “containerPort”=8080, \ “environment”=[{“name”=“ENV”,”value”=“production”},{“name”=“DEBUG”,”value”=“false”}]}’ \ --service-name "my-web-app" \ --cpu 2 \ --memory 4 \ --health-check-path "/health" \ --scaling-target ‘{“minTaskCount”=3,”maxTaskCount”=100}’ --monitor-resources

그러면 다음과 같이 애플리케이션이 생성됩니다.

  • 사용자 지정 이름 'my-web-app'

  • vCPU 2개 및 4GB 메모리

  • 애플리케이션 트래픽용 포트 8080

  • 사용자 지정 상태 확인 엔드포인트

  • 환경 변수

  • 오토 스케일링을 위한 최소 3개의 태스크, 최대 100개의 태스크

4단계: 배포 모니터링

--monitor-resources 플래그는 Express Mode 서비스에 대한 모든 생성, 업데이트 또는 삭제 직접 호출에서 작동합니다. 또한 변경 작업과 별도로 언제든지 서비스의 리소스를 모니터링할 수 있습니다. 배포 시간은 프로비저닝해야 하는 리소스에 따라 달라질 수 있습니다. 상태가 ACTIVE로 변경되면 애플리케이션이 트래픽을 수신할 준비가 된 것입니다.

aws ecs monitor-express-gateway-service --service-arn arn:aws:ecs:region:123456789012:service/app-23d97h88

Express Mode 서비스 애플리케이션의 현재 구성 및 상태도 확인할 수 있습니다.

aws ecs describe-express-gateway-service --service-arn arn:aws:ecs:region:123456789012:service/app-23d97h88

5단계: 애플리케이션에 액세스

활성 상태가 되면 제공된 URL을 사용하여 Express Mode 서비스 애플리케이션에 액세스합니다. URL 형식은 다음과 같습니다.

https://<service-name>.ecs.<region>.on.aws/

예제:

https://app-23d97h88.ecs.us-west-2.on.aws/

이제 애플리케이션이 다음을 사용하여 실행됩니다.

  • 자동 SSL/TLS 종료

  • 여러 가용 영역에서 로드 밸런싱

  • CPU 사용률에 기반한 오토 스케일링

  • CloudWatch 로깅 및 모니터링

  • 향후 업데이트를 위한 5XX 롤백 경보 및 카나리 배포