Amazon ECS Express Mode 서비스에서 생성한 리소스
Express Mode 서비스는 합리적인 기본값을 제공하고 지원 AWS 서비스의 구성을 자동화하여 컨테이너화된 애플리케이션을 배포하는 복잡성을 줄입니다. Express Mode 서비스는 여러 서비스에서 수백 개의 구성 파라미터를 관리하는 대신 컨테이너 이미지, 태스크 실행 역할 및 인프라 역할만 있으면 시작할 수 있습니다.
Express Mode 서비스는 프로덕션 웹 애플리케이션을 실행하기 위해 선호하는 인프라를 함께 번들링하는 Amazon ECS 서비스를 프로비저닝하고 구성하는 절차를 단순화했습니다. Express Mode 서비스는 운영 및 구성 모범 사례를 자동으로 통합합니다. 다음 리소스가 생성됩니다.
Fargate 용량 공급자가 있는 ECS 기본 클러스터(아직 존재하지 않는 경우)
컨테이너, 로깅 및 네트워킹 구성이 포함된 태스크 정의
카나리 배포 및 오토 스케일링을 사용하는 서비스
HTTPS 리스너, 리스너 규칙 및 대상 그룹이 있는 Application Load Balancer
필수 수신이 최소 수준인 보안 그룹
오토 스케일링 및 로드 밸런싱을 위한 서비스 연결 역할
Application Auto Scaling 조정 가능한 대상 및 대상 스케일링 정책.
조정 정책은 필요에 따라 서비스 태스크를 추가하거나 제거하여 측정치를 지정된 대상 값과 같거나 비슷하게 유지합니다. 측정치를 대상 값과 비슷하게 유지하는 것 외에도, 대상 추적 조정 정책은 변동하는 로드 패턴으로 인한 측정치 변동에 맞게 조정하고 서비스에서 실행 중인 작업 수의 급격한 변동을 최소화합니다.
서비스에 특정한 로그 그룹
잘못된 배포를 감지하기 위한 지표 경보
ACM 인증서
기본값을 사용하여 Express Mode 서비스를 시작하거나 최소한의 파라미터 세트를 사용하여 애플리케이션을 구성합니다.
클러스터 기본값
다음 기본값은 클러스터의 Express Mode 내에서 구성할 수 있습니다.
-
clusterName:
default클러스터를 사용합니다.콘솔에서 추가 구성 옵션을 사용하거나
create-express-gateway-service --cluster를 지정하여 이 옵션을 사용자 지정할 수 있습니다.
다음 기본값은 Express Mode에 의해 설정되지만 클러스터에서 직접 업데이트할 수 있습니다.
-
capacityProviders: ["FARGATE"] - Fargate 사용
태스크 정의 기본값
다음 기본값은 태스크 정의에 대해 Express Mode 내에서 구성할 수 있습니다.
cpu: 1024 - 태스크에 할당된 1개 vCPU
콘솔에서 추가 구성 옵션을 사용하거나
create-express-gateway-service --cpu를 실행하여 이 옵션을 사용자 지정할 수 있습니다.memory: 2048 - 태스크에 할당된 2GB 메모리
콘솔에서 추가 구성 옵션을 사용하거나
create-express-gateway-service --memory를 실행하여 이 옵션을 사용자 지정할 수 있습니다.
다음 기본값은 Express Mode에 의해 설정되지만 태스크 정의에서 직접 업데이트할 수 있습니다.
networkMode: "awsvpc" -
awsvpc네트워킹 모드 사용operatingSystemFamily: "LINUX" - Linux 운영 체제에서 실행
cpuArchitecture: "X86_64" - x86_64 프로세서 아키텍처 사용
requiresCompatibilities: ["FARGATE"] - Fargate 시작 유형과 호환
platformVersion: "LATEST" - 최신 Fargate 플랫폼 버전 사용
컨테이너 정의 기본값
다음 기본값은 컨테이너의 Express Mode 내에서 구성할 수 있습니다.
포트: 80 - 컨테이너 트래픽의 기본 포트
다음 기본값은 Express Mode에 의해 설정되지만 태스크 정의 - 컨테이너 정의에서 직접 업데이트할 수 있습니다.
essential: true - 컨테이너가 태스크 상태에 대해 필수로 표시됨
protocol: "tcp" - 로드 밸런서 통신에 대한 기본 프로토콜
name: "Main" - 기본 컨테이너의 기본 이름
기본 컨테이너의 이름을 변경하면 Express Mode가 서비스를 후속 업데이트하는 데 영향을 미칠 수 있습니다. Express Mode 콘솔 또는 API를 사용하여 계속하려는 경우 권장되지 않습니다.
versionConsistency: enabled - 일관된 배포를 위해 이미지 태그를 다이제스트 ID로 확인
initProcessEnabled: true - Docker init 프로세스 지원을 활성화합니다.
stopTimeout: 30 seconds - SIGTERM 및 SIGKILL 신호 사이의 시간.
로깅 기본값
다음 기본값은 CloudWatch Logs의 Express Mode 내에서 구성할 수 있습니다.
awslogs-group: "/aws/ecs/<cluster>/<name>-####" - 클러스터 및 서비스 이름에서 파생된 로그 그룹 이름
콘솔에서 추가 구성 옵션을 사용하거나
create-express-gateway-service --primary-container “awsLogsConfiguration”=[{“logGroup”=“/my/logGroup/”}]를 실행하여 이 옵션을 사용자 지정할 수 있습니다.awslogs-stream-prefix: "ecs" - 로그 스트림 이름의 접두사
콘솔에서 추가 구성 옵션을 사용하거나
create-express-gateway-service --primary-container “awsLogsConfiguration”=[{“logStreamPrefix”=“myprefix”}]를 실행하여 이 옵션을 사용자 지정할 수 있습니다.
다음 기본값은 Express Mode에 의해 설정되지만 태스크 정의 - 로그 구성에서 직접 업데이트할 수 있습니다.
logDriver: "awslogs" - CloudWatch Logs 사용
awslogs-region: current Region - Express Mode 서비스와 동일한 리전 사용
mode: "non-blocking" - 로깅 모드가 비차단으로 설정됨
max-buffer-size: "25m" - 로그 쓰기를 위한 최대 버퍼 크기
서비스 기본값
다음 기본값은 Amazon ECS 서비스의 Express Mode 내에서 구성할 수 있습니다.
serviceName: Express Mode service → Name - 서비스 이름(고객 제공 또는 이미지 이름에서 파생됨)
이름은 생성 시에만 구성할 수 있으며 업데이트 시 구성할 수 없습니다.
cluster: Express Mode service → Cluster - 이 서비스의 ECS 클러스터(고객 제공 또는 기본값)
클러스터는 생성 시에만 구성할 수 있으며 업데이트 시 구성할 수 없습니다.
desiredCount: Express Mode service → MinTasks - 원하는 서비스 수(기본값은 1)
콘솔에서 추가 구성 옵션을 사용하거나
create-express-gateway-service --scaling-target ‘{“minTaskCount”=3}',를 실행하여 이 옵션을 사용자 지정할 수 있습니다.tags: AWS 태그 지정을 위한 Express Mode 서비스 태그(고객 제공)
콘솔에서 추가 구성 옵션을 사용하거나
create-express-gateway-service --tags를 실행하여 이 옵션을 사용자 지정할 수 있습니다. 태그는 새 리소스 생성 시에만 추가할 수 있습니다.
다음 기본값은 Express Mode에 의해 설정되지만 Amazon ECS 서비스에서 직접 업데이트할 수 있습니다.
availabilityZoneRebalancing: true - 자동 AZ 리밸런싱 활성화
CapacityProviderStrategy: {"base": 1, "capacityProvider": "FARGATE", "weight": 1} - 컴퓨팅 용량에 Fargate 사용
deploymentConfiguration: Canary(기본값) - Express Mode 서비스에서 카나리 배포를 사용함
Express Mode 서비스에서는 배포 전략을 업데이트할 수 없습니다.
enableECSManagedTags: true - ECS 관리형 리소스 태그 지정 활성화
healthCheckGracePeriodSeconds: 300 - 스케줄러가 ELB 또는 Lattice 상태 확인을 보기 전 유예 기간(ELB 상태 확인 유예 기간 기본값과 일치)
launchType: <설정되지 않음> - 용량 공급자 사용
loadBalancers: ECS에서 처리하는 로드 밸런서 구성
Express Mode 서비스에서는 로드 밸런서 구성을 업데이트할 수 없습니다.
placementStrategy: 설정되지 않음 - 시작 시 Fargate 사용(항상 AZ 분산 상태여야 함)
platformVersion: LATEST - Fargate 플랫폼 버전(LATEST로 하드 코딩됨)
propagateTags: "SERVICE" - 서비스에서 태스크로 태그 전파
schedulingStrategy: "REPLICA" - Express Mode 서비스는 REPLICA 서비스임
taskDefinition: Express Mode service created - 사용할 태스크 정의(Express Mode 서비스에서 제공)
네트워크 구성 기본값
다음 기본값은 Amazon ECS 서비스 - 네트워크 구성 내에서 구성할 수 있습니다.
networkConfiguration.Subnets: 아무것도 제공되지 않으면 Express Mode는 기본 VPC의 기본 퍼블릭 서브넷을 사용합니다.
기본 VPC에는 서브넷당 할당된 CIDR 블록 기준으로 사용 가능한 IP가 8개 이상 있는 두 개 이상의 가용 영역에 두 개 이상의 퍼블릭 서브넷이 있어야 합니다.
사용자가 사용자 지정 퍼블릭 서브넷을 제공하는 경우 Express Mode는 인터넷 대면 ALB를 프로비저닝하고 태스크에 대해 assignPublicIP를 켭니다. 사용자가 프라이빗 서브넷(라우팅 테이블에 인터넷 게이트웨이가 없는 서브넷)을 제공하는 경우 Express Mode는 내부 ALB를 프로비저닝합니다.
사용자가 서브넷을 지정하는 경우 VPC의 첫 번째 Express Mode 서비스는 해당 VPC의 인터넷 대면 또는 내부 로드 밸런서와 연결된 서브넷을 정의합니다. 동일한 VPC에서 시작하는 후속 Express Mode 서비스에는 로드 밸런서에서 지원하는 가용 영역과 일치하는 서브넷이 있어야 합니다. 따라서 모든 가용 영역의 서브넷을 사용하여 Express Mode 서비스를 생성하는 것이 좋습니다.
networkConfiguration.SecurityGroups: 아무것도 제공하지 않은 경우 Express Mode는 서비스 보안 그룹과 Load Balancer 보안 그룹을 모두 생성합니다.
서비스 보안 그룹에서는 퍼블릭 인터넷으로의 아웃바운드 트래픽을 허용하지만 서브넷 구성과 같은 네트워킹의 다른 측면에 따라 제한될 수 있습니다.
로드 밸런서 보안 그룹. 로드 밸런서 보안 그룹은 HTTPS 확인을 위한 인바운드 트래픽과 사용자가 지정한 컨테이너 포트(기본값 80)의 서비스 보안 그룹에 대한 아웃바운드 트래픽을 허용합니다. 또한 Express Mode의 생성 또는 업데이트 직접 호출에 제공된 컨테이너 포트와 일치하도록 자동으로 업데이트됩니다.
콘솔에서 추가 구성 옵션을 사용하거나
create-express-gateway-service --network-configuration '{"securityGroup": ["sg-xxxxxxx"]}'를 실행하여 이 옵션을 사용자 지정할 수 있습니다. 보안 그룹을 제공하면 서비스에 대한 추가 수신 경로를 제공하는 것입니다.
다음 기본값은 Express Mode에 의해 설정되지만 Amazon ECS 서비스 - 네트워크 구성에서 직접 업데이트할 수 있습니다.
assignPublicIp: 서브넷 유형에 따라 다름 - 기본 VPC의 사용자가 퍼블릭 인터넷에 액세스할 수 있도록 퍼블릭 서브넷에 대해 활성화되며 기본적으로 각 태스크에서 퍼블릭 IP를 활성화합니다. 프라이빗 서브넷을 제공하는 경우 비활성화되며, 태스크에 인터넷 액세스가 필요한 경우 NAT 게이트웨이를 구성하는 것은 사용자의 책임입니다.
IAM 역할 기본값
해당되는 경우 서비스 연결 역할을 자동으로 생성하여 Express Mode 서비스에 대해 다음 IAM 역할을 구성할 수 있습니다.
executionRoleArn: 태스크 실행 역할(필수 파라미터)
필요한 권한이 관리형 정책에 있는 동안 추가 정책 및 권한을 연결할 수 있습니다. AWS 관리형 정책 참조 가이드의 AmazonECSTaskExecutionRolePolicy에 나오는 추가 세부 정보
infrastructureRoleArn: Express Gateway Services의 인프라 역할(필수 파라미터)
필요한 권한이 관리형 정책에 있는 동안 추가 정책 및 권한을 연결할 수 있습니다. AWS 관리형 정책 참조 가이드의 AmazonECSInfrastructureRoleforExpressGatewayServices에 나오는 추가 세부 정보
taskRoleArn: 컨테이너 애플리케이션 코드의 직접 호출에 대한 태스크 역할(선택 사항)
콘솔에서 추가 구성 옵션을 사용하거나
create-express-gateway-service --task-role-arn를 실행하여 이 옵션을 사용자 지정할 수 있습니다.Express Mode 서비스를 생성하거나 업데이트하기 전에 새 IAM 역할을 생성해야 합니다.
다음 IAM 역할은 Express Mode에 의해 자동으로 구성됩니다.
ecsServiceRoleForECS: Amazon ECS가 클러스터를 관리하도록 허용
AWSServiceRoleForElasticLoadBalancing: 사용자를 대신해 다른 AWS 서비스 직접 호출, Elastic Load Balancing에서 자동으로 생성됨
AWSServiceRoleForApplicationAutoScaling_ECSService: 사용자를 대신해 다른 AWS 서비스 직접 호출, Application Auto Scaling에서 자동으로 생성됨
Application Auto Scaling 기본값
다음 Application Auto Scaling 설정은 Express 모드에서 구성할 수 있습니다.
autoScalingTargetValue: 60 - 조정을 위한 목표 CPU 사용률
autoScalingMetric: "CPUUtilization" - 오토 스케일링 결정에 사용되는 지표
desiredMinTaskCount: 1 - 유지 관리할 최소 태스크 수
desiredMaxTaskCount: 20 - 조정할 최대 태스크 수(증가 또는 감소 가능)
다음 설정은 Application Auto Scaling에서 직접 구성할 수 있습니다.
policyType: "TargetTrackingScaling" - 대상 추적 조정 정책 사용
disableScaleIn: false - 수요 감소 시 스케일 다운 허용
애플리케이션 조정 대상 기본값
Application Auto Scaling 대상은 자동 조정 작업에 대한 조정 가능한 리소스 및 용량 제한을 정의합니다. 다음은 Express Mode에서 수정할 수 있습니다.
MaxCapacity: Express Mode service → MaxTasks - 서비스가 스케일 업할 최대 태스크 수(CreateLoadBalancedService의 기본값 또는 고객 제공)
MinCapacity: Express Mode service → MinTasks - 서비스가 스케일 다운할 최소 태스크 수(CreateLoadBalancedService의 기본값 또는 고객 제공)
ScalableDimension: ecs:service:DesiredCount - 조정할 속성
Tags: CreateLoadBalancedService에서 전달된 태그에서 파생됨 - 이 리소스의 리소스 태그
다음 기본값은 Application Auto Scaling 조정 가능한 대상에서 수정할 수 있습니다.
DynamicScalingInSuspended: false - 스케일 인의 일시 중단 여부를 나타냄
DynamicScalingOutSuspended: false - 스케일 아웃의 일시 중단 여부를 나타냄
ScheduledScalingSuspended: false - 예약된 조정의 일시 중단 여부를 나타냄
애플리케이션 조정 정책 기본값
조정 정책은 CPU 사용률을 모니터링하고 태스크 수를 조정하여 최적의 성능을 유지 관리하는 대상 추적 알고리즘을 구현합니다. 다음은 Express Mode에서 수정할 수 있습니다.
TargetValue: 60% - 추적 정책의 대상 값(Express Mode 서비스 → scaling-target-value)
PredefinedMetricType: ECSServiceAverageCPUUtilization - 추적하는 지표의 이름 유형(Express Mode 서비스 → scaling-metric)
Express Mode는 평균 CPU 사용률, 평균 메모리 사용률 및 대상당 요청 수에 대한 조정 지표를 제공합니다. 대상당 요청 수는 Application Load Balancer에서 가져오며, 초당 대상 기준으로 최대 65,536개의 요청을 설정할 수 있습니다. 이는 Application Load Balancer 대상 그룹의 Amazon ECS 서비스입니다.
다음 기본값은 Express Mode에 의해 설정되지만 Application Auto Scaling 정책에서 변경할 수 있습니다.
PolicyName: <ServiceName><"TargetMetric"> - 이 조정 정책의 이름(ECS 서비스 이름 및 대상 지표에서 파생됨)
PolicyType: TargetTrackingScaling - 수행 중인 조정 유형(미리 정의된 기본값)
ScalableDimension: "ecs:service:DesiredCount" - 조정할 속성(사전 정의된 기본값)
DisableScaleIn: false - 스케일 인의 비활성화 여부를 나타냄
Application Load Balancer 기본값
다음 Application Load Balancer 기본값은 Express Mode에서 구성할 수 있습니다.
scheme: 서브넷에 따라 다름 - 퍼블릭 서브넷이 제공될 때 퍼블릭 IP 주소를 사용하여 인터넷 대면 로드 밸런서를 생성합니다. 프라이빗 서브넷이 제공될 때 프라이빗 IP 주소를 사용하여 내부 로드 밸런서를 생성합니다.
ip-address-type: 서브넷에 따라 다름 - 주소가 IPv4인 경우 IPv4 전용 Application Load Balancer를 생성합니다. IPv6 지원 서브넷이 있는 경우 듀얼 스택 Application Load Balancer가 생성됩니다. IPv6 지원 서브넷이 있는 경우 VPC의 첫 번째 Express Mode 서비스는 해당 VPC의 내부 또는 인터넷 대면 로드 밸런서를 정의합니다. 따라서 IPv6 전용 서브넷을 먼저 생성하거나 새 VPC에서 생성하는 것이 좋습니다.
다음 기본값은 Express 모드에 의해 설정되며 Application Load Balancer에서 구성할 수 있습니다.
desync-mitigation-mode: Off - HTTP 비동기 완화가 비활성화됨
access-logs.enabled: false - 액세스 로깅이 비활성화됨
listener-configurations.protocol: https - 보안 통신을 위해 HTTPS 프로토콜 사용
listener-configurations.port: 443 - 표준 HTTPS 포트에서 수신 대기
listener-configurations.rule-type: host-header - 호스트 헤더 규칙을 기반으로 트래픽 라우팅
대상 그룹 기본값
다음 Amazon EC2 대상 그룹 기본값은 Express Mode에서 구성할 수 있습니다.
health-check-path: (기본값"/") Express Mode 서비스 상태 확인 경로 - 상태 확인 요청에 대한 URL 경로
port: (기본값 80) - 대상이 트래픽을 수신하는 포트
health-check-port: (기본값 80) - 상태 확인 요청을 위한 포트
다음 기본값은 Express Mode에 의해 설정되며 Amazon EC2 대상 그룹에서 구성할 수 있습니다.
protocol: HTTP - 트래픽을 대상으로 라우팅하기 위한 프로토콜
protocol-version: HTTP1 - 통신을 위한 HTTP 프로토콜 버전
vpc-id: 기본값은 기본 VPC - 대상 그룹의 가상 프라이빗 클라우드 식별자이지만 제공된 서브넷에서 파생됨
health-check-protocol: 프로토콜과 동일 - 상태 확인 요청에 대한 프로토콜
health-check-enabled: 항상 활성화됨 - 상태 확인이 자동으로 활성화됨
health-check-interval-seconds: 30 - 개별 대상의 상태 확인 사이의 시간
health-check-timeout-seconds: 5 - 상태 확인 응답의 제한 시간
healthy-threshold-count: 5 - 정상 상태에 필요한 연속 성공 상태 확인
unhealthy-threshold-count: 2 - 비정상 상태에 필요한 연속적인 상태 확인 실패
target-type: ip - 대상이 IP 주소로 등록됨
ip-address-type: ipv4 - 대상 등록에 IPv4 주소 사용
리소스 공유 및 비용 최적화
Express Mode 서비스는 가능한 경우 비용을 최적화하기 위해 리소스를 자동으로 공유합니다.
-
로드 밸런서 공유 - 동일한 VPC에서 최대 25개의 Express Mode 서비스가 Application Load Balancer를 공유할 수 있습니다. Express Mode는 사용자가 프로비저닝한 Express Mode 서비스의 양에 따라 필요한 경우 추가 Application Load Balancer를 프로비저닝합니다. 또한 VPC에서 Express Mode 서비스의 양을 줄이면 Express Mode는 사용하지 않는 Application Load Balancer도 프로비저닝 해제합니다. 이 공유를 통해 더 많은 Express Mode 서비스를 배포할 때 애플리케이션당 유효 비용이 줄어듭니다.
-
클러스터 공유 - Amazon ECS 클러스터에서 Express Mode 서비스를 함께 그룹화할 수 있습니다. Express Mode 서비스는 Express Mode에서 관리하지 않는 Amazon ECS 서비스와 Amazon ECS 클러스터를 공유할 수도 있습니다.