View a markdown version of this page

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 또는 프라이빗 레지스트리에 저장된 컨테이너 이미지

  • 서비스를 생성하는 AWS 리전에 퍼블릭 서브넷이 있는 기본 VPC입니다. 기본적으로 Express Mode 서비스는 계정의 기본 VPC 및 퍼블릭 서브넷에 인터넷 연결 로드 밸런서를 생성합니다. 계정에 기본 VPC가 없는 경우, 시작하기 전에 하나를 생성하거나 서비스를 생성할 때 자체 서브넷을 지정합니다. 자세한 내용은 Amazon VPC 사용 설명서기본 VPC를 참조하세요.

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 역할 섹션을 참조하세요.

참고

IAM 역할은 최종적으로 일관되므로 새로 생성된 역할을 즉시 사용하지 못할 수 있습니다. 이러한 역할을 생성한 직후 첫 번째 create-express-gateway-service 호출이 Unable to assume the service linked role(또는 유사한 assume-role 오류)와 함께 실패하는 경우, 역할이 전파될 때까지 잠시(약 1분) 기다린 다음 명령을 다시 시도합니다.

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

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

aws ecs create-express-gateway-service \ --primary-container "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개의 태스크

자체 작업 정의를 사용하여 Express Mode 서비스 생성

자체 작업 정의를 사용하여 Express Mode 서비스를 생성할 수도 있습니다. 자체 작업 정의를 사용하면 작업 수준 구성을 완전히 제어할 수 있습니다. Express Mode는 로드 밸런싱, 오토 스케일링 및 카나리 배포를 포함한 인프라를 계속 관리합니다.

다음 AWS Command Line Interface(AWS AWS CLI) 명령은 사용자 지정 작업 정의를 사용하여 Express Mode 서비스를 생성합니다.

aws ecs create-express-gateway-service \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --task-definition-arn arn:aws:ecs:us-west-2:123456789012:task-definition/my-td:3 \ --health-check-path "/health" \ --monitor-resources

작업 정의는 다음 요구 사항을 충족해야 합니다.

  • 컨테이너 이름 Main

  • Main 컨테이너에는 컨테이너 포트 및 포트 이름을 사용하는 단일 TCP 포트 매핑이 있어야 합니다.

  • 작업 정의는 호환성에 FARGATE이 있어야 합니다.

참고

taskDefinitionArn 파라미터는 동일한 API 호출에서 primaryContainer, executionRoleArn, taskRoleArn, cpu, 또는 memory으로 지정할 수 없습니다. Express Mode는 제공받은 작업 정의에서 이러한 값을 도출합니다.

4단계: 배포 모니터링

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

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

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

aws ecs describe-express-gateway-service --service-arn arn:aws:ecs:region:123456789012:service/default/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 롤백 경보 및 카나리 배포