Express Mode를 사용하여 더 빠르게 AWS CloudFormation 스택 배포
CloudFormation Express Mode를 사용하면 리소스가 완전히 안정화될 때까지 기다리지 않고 CloudFormation에서 리소스 구성을 적용하는 즉시 스택 작업을 완료할 수 있습니다. Express Mode를 사용하여 반복 개발 워크플로 중에 스택을 훨씬 더 빠르게 생성, 업데이트 및 삭제할 수 있습니다.
Express Mode는 기존의 모든 CloudFormation 템플릿에서 작동합니다. Express Mode를 사용하기 위해 템플릿을 변경하지 않아도 됩니다.
주제
Express Mode를 사용하는 경우
완전한 리소스 안정화를 기다리는 것보다 속도가 더 중요한 개발 및 반복 워크플로에 대해 Express Mode를 사용합니다. 다음과 같은 경우 Express Mode를 사용합니다.
-
개발 중에 템플릿 변경 사항을 반복합니다.
-
리소스 구성이 유효한지에 대한 더 빠른 피드백을 원합니다.
-
계속하기 전에 리소스가 완전히 작동할 때까지 기다리지 않아도 됩니다.
배포 완료를 고려하기 전에 리소스가 완전히 안정화되고 작동하는지 확인해야 하는 프로덕션 배포의 경우 기본 배포 모드를 사용합니다.
Express Mode 작동 방식
기본 배포 모드에서 CloudFormation은 리소스를 완료로 보고하기 전에 각 리소스가 완전히 안정화된 상태에 도달할 때까지 기다립니다. 예를 들어 Amazon EC2 인스턴스를 생성하는 경우 CloudFormation은 인스턴스가 running 상태가 될 때까지 기다립니다.
Express Mode에서 CloudFormation은 일반적으로 리소스 생성, 업데이트 또는 삭제를 수행하는 API 직접 호출이 성공하는 즉시 리소스 작업을 완료한 것으로 간주합니다. 대부분의 경우 CloudFormation은 리소스가 최종 작동 상태에 도달할 때까지 기다리지 않습니다.
즉, Express Mode 스택 작업을 완료한 후에 다음을 수행합니다.
-
리소스가 여전히 초기화 중이거나 변경 사항을 전파하고 있을 수 있습니다.
-
리소스에서 아직 트래픽을 처리하거나 연결을 수락할 준비가 되지 않았을 수 있습니다.
-
삭제 작업이 여전히 진행 중일 수 있습니다.
CloudFormation이 Express Mode에서 종속성을 처리하는 방법
Express Mode는 템플릿에 정의된 리소스 종속성을 고려합니다. 리소스가 Ref 또는 Fn::GetAtt를 통해 다른 리소스의 ID 또는 속성을 참조하는 경우 CloudFormation은 종속 리소스를 시작하기 전에 참조되는 리소스의 구성을 적용했는지 확인합니다. 참조되는 리소스가 준비되지 않아 종속 리소스에 일시적인 장애가 발생하면 CloudFormation은 작업을 재시도합니다.
서로 종속되지 않은 리소스는 병렬로 진행할 수 있습니다.
Express Mode는 리소스의 종속 순서를 변경하지 않습니다. 스택 작업이 완료로 보고되면 변경됩니다.
Express Mode 시작하기
Express Mode는 AWS Command Line Interface(AWS CLI), AWS Cloud Development Kit (AWS CDK)(AWS CDK), CloudFormation 콘솔 및 변경 세트와 함께 사용할 수 있습니다. 다음 섹션에서는 각 방법으로 Express Mode를 활성화하는 방법을 설명합니다.
AWS CLI에서 Express Mode 사용
AWS CLI에서 Express Mode를 사용하려면 스택 작업 명령에 --deployment-config 파라미터를 추가합니다.
Express Mode를 사용하여 스택 생성
다음 명령은 Express Mode를 사용하여 스택을 생성합니다.
aws cloudformation create-stack --stack-namemy-stack\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS"}'
Express Mode를 사용하여 스택 업데이트
다음 명령은 Express Mode를 사용하여 스택을 업데이트합니다.
aws cloudformation update-stack --stack-namemy-stack\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS"}'
Express Mode를 사용하여 스택 삭제
다음 명령은 Express Mode를 사용하여 스택을 삭제합니다.
aws cloudformation delete-stack --stack-namemy-stack\ --deployment-config '{"mode": "EXPRESS"}'
AWS CDK에서 Express Mode 사용
AWS Cloud Development Kit (AWS CDK)(AWS CDK)에서 Express Mode를 사용하려면 cdk deploy 명령과 함께 --express 플래그를 사용합니다.
cdk deploy --express
AWS SAM에서 Express Mode 사용
AWS SAM CLI에서 Express Mode를 사용하려면 배포 또는 동기화 명령에 --express 플래그를 추가합니다.
sam deploy --express
sam sync --express
프로젝트 구성에서 설정을 유지하려면 --save-params를 사용합니다.
sam deploy --express --save-params
이렇게 하면 express = true가 samconfig.toml 파일에 저장되므로 후속 배포에서 Express Mode를 자동으로 사용합니다.
Express Mode가 활성화되면 AWS SAM CLI는 배포 구성을 CloudFormation에 전달합니다. --disable-rollback 플래그는 배포 구성 내에서 롤백 동작을 제어합니다.
콘솔에서 Express Mode 사용
CloudFormation 콘솔에서 스택을 생성하거나 업데이트하는 경우 스택 옵션 구성 단계에서 Express Mode를 활성화할 수 있습니다. 배포 옵션에서 배포 모드에 대해 Express를 선택합니다.
변경 세트와 함께 Express Mode 사용
변경 세트를 생성할 때 배포 구성을 지정하여 변경 세트와 함께 Express Mode를 사용할 수 있습니다.
aws cloudformation create-change-set --stack-namemy-stack\ --change-set-namemy-change-set\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS"}'
변경 세트를 실행하면 CloudFormation은 변경 세트 생성 중에 지정된 Express Mode 배포 구성을 적용합니다.
Express Mode를 사용하는 롤백 동작
Express Mode를 사용하는 경우 CloudFormation은 기본적으로 롤백을 비활성화합니다. 리소스 작업에 실패해도 CloudFormation은 변경 사항을 자동으로 롤백하지 않습니다.
Express Mode를 사용할 때 롤백을 다시 활성화하려면 --deployment-config 파라미터에서 disableRollback을 false로 설정합니다.
aws cloudformation create-stack --stack-namemy-stack\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS", "disableRollback": false}'
Express Mode 및 중첩 스택
상위 스택에서 Express Mode를 사용하면 설정이 계층 구조의 모든 중첩 스택으로 전파됩니다. 각 중첩 스택에 대해 Express Mode를 별도로 지정하지 않아도 됩니다. 루트 스택 및 해당 중첩 스택에 있는 모든 리소스는 해당 구성을 적용하는 즉시 완료됩니다.
리소스 준비 상태 고려 사항
Express Mode는 리소스가 완전히 안정화된 상태에 도달하기 전에 리소스 작업을 완료하므로, 모든 리소스가 트래픽을 완전히 처리하거나 다중 리전 전파를 완료하는 데 추가 시간이 필요할 수 있습니다. 다음 표에서는 여러 리소스 유형의 예제를 사용하여 예상할 수 있는 리소스 동작의 종류를 보여줍니다. 이 예제는 예시이며, 지원되는 리소스의 전체 목록을 나타내지 않습니다.
| 리소스 유형 | 연산 | 준비 상태 동작 |
|---|---|---|
| Amazon CloudFront 배포 | 생성 및 업데이트 | 구성을 적용한 후 배포가 글로벌로 배포되는 데 몇 분 정도 걸릴 수 있습니다. |
| Amazon EC2 인스턴스 | 생성 | 스택 작업을 완료한 후에도 인스턴스가 여전히 초기화(사용자 데이터 스크립트 실행, 상태 검사) 중일 수 있습니다. |
| AWS Lambda 함수 | 삭제 | 삭제 작업을 완료로 보고한 후에도 함수 리소스가 여전히 정리 중일 수 있습니다. |
| Amazon Elastic Container Service(Amazon ECS) 서비스 | 생성 및 업데이트 | 스택 작업을 완료한 후에도 서비스 태스크가 계속 시작 중이거나 안정 상태에 도달하는 중일 수 있습니다. |
지원되지 않는 기능 및 제한 사항
다음과 같은 기능 및 서비스는 Express Mode에서 지원되지 않습니다.
- CloudFormation StackSets
-
CloudFormation은 StackSets 작업에서 Express Mode를 지원하지 않습니다.
다음 리소스에는 Express Mode와 관련된 특정 동작이 있습니다.
- 사용자 지정 리소스
-
사용자 지정 리소스(
AWS::CloudFormation::CustomResource및Custom::*리소스 포함)는 기본 동작을 따릅니다. CloudFormation은 Express Mode에서도 작업 완료를 고려하기 전에 사용자 지정 리소스가 응답 신호를 보낼 때까지 기다립니다. 느리거나 멈춘 사용자 지정 리소스로 인해 빠른 반복 워크플로가 지연되지 않도록 하려면ServiceTimeout속성을 사용하여 최대 대기 시간을 설정합니다. 자세한 내용은 응답 제한 시간 섹션을 참조하세요.
AWS CDK 핫스왑 배포와 비교
다음 표에서는 Express Mode를 AWS CDK 핫스왑 배포와 비교합니다.
| 기능 | Express Mode | AWS CDK 핫스왑 |
|---|---|---|
| 배포 메커니즘 | 모든 리소스 작업에 CloudFormation 사용 | CloudFormation 우회 및 서비스 API 직접 호출 |
| 템플릿 호환성 | 모든 기존 CloudFormation 템플릿과 함께 작동 | 제한된 리소스 유형 세트 지원 |
| 스택 상태 | 스택 상태는 템플릿과 일관성을 유지함 | 스택 상태가 템플릿에서 드리프트될 수 있음 |
| 롤백 지원 | 롤백 지원(기본적으로 비활성화됨) | 롤백 지원 없음 |
| 리소스 적용 범위 | 모든 CloudFormation 리소스 유형 | 제한된 리소스 유형(AWS Lambda, Amazon ECS, AWS Step Functions 등) |
| 권장 사용 | 개발 및 반복 워크플로 | 지원되는 리소스만 있는 개발 워크플로 |
관련 리소스
-
AWS CloudFormation API 참조의 CreateStack