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 롤백 경보 및 카나리 배포