드리프트 인식 변경 세트 사용
드리프트 인식 변경 세트는 스택 드리프트를 안전하게 식별 및 관리할 수 있는 향상된 CloudFormation 변경 세트입니다. 기본 서비스의 AWS Management 콘솔, AWS CLI 또는 SDK를 사용하여 CloudFormation 외부에서 스택 리소스가 변경될 때 스택이 예상 템플릿 구성에서 드리프트됩니다. 드리프트 인식 변경 세트는 템플릿을 스택 리소스의 실제 상태와 비교하고 드리프트된 리소스를 템플릿 정의에 맞게 조정합니다. 리소스의 템플릿 정의가 실제 상태와 일치하도록 업데이트되면 드리프트 인식 변경 세트는 리소스를 수정하지 않고 리소스의 드리프트 상태를 재설정합니다.
드리프트 인식 변경 세트를 사용하면 다음과 같은 이점이 있습니다.
-
드리프트의 미리 보기 덮어쓰기 - 배포가 인시던트 응답 중에 수행된 중요한 대역 외 변경 내용을 되돌릴지를 감지합니다.
-
체계적 드리프트 조정 - 드리프트된 속성을 템플릿 값으로 덮어쓰거나 실제 리소스 상태와 일치하도록 템플릿을 업데이트하여 드리프트된 리소스를 규정 준수 템플릿 정의에 맞게 안전하게 조정합니다.
-
향상된 롤백 기능 - 배포에 실패하면 리소스를 이전 템플릿 상태가 아닌 실제 사전 배포 상태로 복원합니다.
-
완전한 가시성 - 변경하기 전에 배포가 실제 리소스 구성에 미치는 영향을 정확하게 확인합니다.
기존 변경 세트는 새 템플릿을 스택의 이전 템플릿과 비교하지만 스택 드리프트는 고려하지 않습니다. 드리프트 인식 변경 세트는 다음을 3방향 비교를 통해 이 문제를 해결합니다.
-
실제 상태 - 리소스의 라이브 구성. CloudFormation은 기본 서비스 API를 통해 변경 세트 생성 시 계정에서 리소스 구성을 읽습니다.
-
이전 배포 상태 - 마지막 CloudFormation 배포의 템플릿에 정의된 구성.
-
원하는 상태 - 새 템플릿에 정의된 구성.
드리프트 인식 변경 세트는 리소스가 템플릿에서 명시적으로 변경되지 않은 경우에도 원하는 상태와 일치하도록 모든 스택 리소스의 실제 상태를 업데이트합니다.
고려 사항
-
리소스 유형 지원 - 드리프트 인식 변경 세트는 원하는 상태를 수백 개의 리소스 유형에 대한 실제 상태와 비교할 수 있도록 지원합니다. 지원되지 않는 리소스 유형의 경우 드리프트 인식 변경 세트는 이전 배포 상태를 원하는 상태와 비교하는 기능으로 대체됩니다. 자세한 내용은 지원되는 리소스 유형 섹션을 참조하세요.
-
쓰기 전용 속성 - 민감한 데이터(암호, 보안 암호)가 포함된 속성의 경우 드리프트 인식 변경 세트는 실제 값이 아닌 이전 배포 값과 비교됩니다.
-
AWS 관리형 속성 - 드리프트 인식 변경 세트는 Amazon EC2 Auto Scaling 그룹의 원하는 용량과 같이 관리형 속성에 대해 AWS 서비스에서 수행한 대역 외 변경 내용을 보존합니다. 자세한 내용은 AWS 관리형 속성 섹션을 참조하세요.
-
외부 태그 키 - 드리프트 인식 변경 세트는 템플릿에 지정되지 않은 태그 키를 제거하거나 수정하지 않으므로 속성 기반 액세스 제어(ABAC) 시스템과의 충돌을 방지합니다.
-
드리프트된 리소스 교체 - 드리프트 인식 변경 세트는 변경 불가능한 속성에 대한 드리프트 조정을 지원하지 않습니다.
-
교차 스택 연결 -
AWS::IAM::Policy와 같은 일부 리소스 유형은AWS::IAM::Role과 같은 다른 리소스 유형의 실제 상태에 영향을 미칠 수 있습니다. 드리프트 인식 변경 세트는 스택 내 리소스 연결을 처리합니다. 리소스가 다른 스택의 보조 리소스 연결을 통해 수정되는 경우 드리프트 인식 변경 세트는 수정을 드리프트로 감지하고 연결을 되돌릴 수 있습니다. 자주 사용되는 연결 가능한 리소스로,AWS::IAM::Policy,AWS::IAM::ManagedPolicy,AWS::EC2::SecurityGroupIngress,AWS::EC2::SecurityGroupEgress가 있습니다.
AWS 관리형 속성
활성 AWS 관리를 위해 특정 리소스 속성을 구성할 수 있습니다. 예를 들어 Amazon Relational Database Service(Amazon RDS)에서 Amazon RDS 테이블의 마이너 엔진 버전을 자동으로 업그레이드하도록 허용할 수 있습니다. 이러한 변경 내용은 CloudFormation에 스택 드리프트로 표시될 수 있습니다. 드리프트 인식 변경 세트는 AWS 관리형 속성에 대해 드리프트가 예상됨을 인식하고 템플릿에서 속성을 수정하지 않은 경우 실제 값을 그대로 둡니다. 다음은 AWS 관리형 속성의 주요 예제입니다.
-
Amazon RDS 테이블의
AutoMinorVersionUpgrade속성을 활성화하여 엔진 버전의 자동 업데이트 허용. -
AWS::ApplicationAutoScaling::ScalableTarget리소스를 사용하여 Amazon DynamoDB 테이블의 읽기/쓰기 용량 단위 및 원하는 Amazon Elastic Container Service 클러스터 수와 같은 속성에 대한 자동 오토 스케일링 활성화. -
Amazon EC2 Auto Scaling 그룹에 대한
AWS::AutoScaling::ScalingPolicy사용.
드리프트 인식 변경 세트는 AWS 관리형으로 식별된 속성을 명확히 합니다. 자세한 내용은 AWS CLI 섹션을 참조하세요.
드리프트 인식 변경 세트 사용(콘솔)
배포 모드에 대한 추가 옵션과 함께 기존 변경 세트와 동일한 워크플로를 사용하여 CloudFormation 콘솔을 통해 드리프트 인식 변경 세트를 생성 및 관리할 수 있습니다.
드리프트 인식 변경 세트 생성
드리프트 인식 변경 세트를 생성하는 방법(콘솔)
AWS Management 콘솔에 로그인하여 https://console.aws.amazon.com/cloudformation
에서 CloudFormation 콘솔을 엽니다. -
스택 페이지에서 업데이트하려는 스택을 선택합니다.
-
스택 작업을 선택한 후 현재 스택에 대한 변경 세트 생성을 선택하세요.
-
변경 세트 생성 페이지의 변경 세트 유형에서 드리프트 인식 변경 세트를 선택하세요.
-
변경 세트 생성을 선택합니다.
-
변경 세트 세부 정보 페이지에서 영향을 받는 각 리소스의 실제, 이전 배포 및 원하는 상태를 보여주는 세 가지 방향의 비교를 검토하세요.
-
변경 내용에 만족하면 변경 세트 실행을 선택하세요.
드리프트 인식 변경 세트 검토
콘솔에서 드리프트 인식 변경 세트를 보면 기존 변경 세트에 비해 향상된 정보가 표시됩니다.
-
스택 드리프트 상태 - 스택이 마지막 배포에서 드리프트되었는지를 나타냅니다.
-
속성 비교 - 영향을 받는 리소스의 실제 상태와 원하는 상태 간 JSON 차이를 표시합니다.
-
드리프트 표시기 - 드리프트된 JSON 차이 내 속성을 명확하게 표시합니다. 드리프트 보기를 클릭하여 속성의 이전 배포 값을 확인합니다.
-
값 소스 표시기 - 속성의 이전 값이 실제 상태에 기반하는지, 이전 배포 상태에 기반하는지를 표시합니다.
드리프트 인식 변경 세트 사용(AWS CLI)
create-change-set 명령에 --deployment-mode REVERT_DRIFT 파라미터를 추가함으로써 AWS CLI를 사용하여 드리프트 인식 변경 세트를 생성하고 관리할 수 있습니다.
드리프트 인식 변경 세트 생성
드리프트 인식 변경 세트를 생성하는 방법
create-change-set 명령을 --deployment-mode REVERT_DRIFT 파라미터와 함께 사용하여 드리프트 인식 변경 세트를 생성합니다.
aws cloudformation create-change-set \ --stack-namemy-stack\ --change-set-namemy-drift-aware-changeset\ --template-bodyfile://updated-template.yaml\ --deployment-mode REVERT_DRIFT \ --capabilitiesCAPABILITY_IAM
드리프트 인식 변경 세트 검토
드리프트 인식 변경 세트의 세부 정보를 검토하는 방법
describe-change-set 명령을 사용하여 드리프트 인식 변경 세트의 세부 정보를 검토합니다.
aws cloudformation describe-change-set \ --change-set-namemy-drift-aware-changeset\ --stack-namemy-stack
응답에는 드리프트 인식 변경 세트에 대한 향상된 정보가 포함됩니다.
-
StackDriftStatus- 스택의 드리프트 여부를 표시합니다(DRIFTED,IN_SYNC,NOT_CHECKED또는UNKNOWN). -
ResourceDriftStatus- 각 리소스의 드리프트 상태를 표시합니다(DELETED,MODIFIED,IN_SYNC또는NOT_CHECKED). -
BeforeValueFrom- 속성의 이전 값이ACTUAL_STATE또는PREVIOUS_DEPLOYMENT_STATE에서 비롯되는지를 나타냅니다. -
Drift-PreviousValue,ActualValue,DriftDetectionTimestamp를 비롯한 속성에 대한 드리프트 세부 정보를 포함합니다. -
ResourceDriftIgnoredProperties- 변경 세트가 드리프트를 되돌리지 않는 리소스의 속성과 드리프트를 무시하는 이유를 포함합니다.
자세한 내용은 AWS CloudFormation API 참조의 DescribeChangeSet를 참조하세요.
드리프트 인식 변경 세트 실행
드리프트 인식 변경 세트를 실행하는 방법
변경 세트를 검토한 후 execute-change-set 명령을 사용하여 변경 내용을 적용합니다.
aws cloudformation execute-change-set \ --change-set-namemy-drift-aware-changeset\ --stack-namemy-stack
배포에 실패하면 CloudFormation은 리소스를 실제 사전 배포 상태로 롤백하고 마지막 배포 이후 변경된 대역 외 변경 내용을 유지합니다.
지원되는 리소스 유형
드리프트 인식 변경 세트는 다음 리소스 유형을 제외하고 드리프트 감지를 지원하는 모든 리소스 유형에 대해 실제 상태, 이전 배포 상태 및 원하는 상태의 3방향 비교를 지원합니다.
-
AWS::SageMaker::MlflowTrackingServer -
AWS::Route53Resolver::FirewallRuleGroup -
AWS::MediaLive::Multiplexprogram -
AWS::VpcLattice::ResourceConfiguration -
AWS::S3::StorageLensGroup -
AWS::Bedrock::AgentAlias -
AWS::MSK::Cluster -
AWS::RDS::DBProxy -
AWS::Redshift::ClusterParameterGroup -
AWS::QBusiness::Index -
AWS::NetworkManager::CoreNetwork -
AWS::IAM::OIDCProvider -
AWS::Organizations::ResourcePolicy -
AWS::SNS::TopicInlinePolicy -
AWS::Route53::KeySigningKey -
AWS::DataZone::PolicyGrant -
AWS::Transfer::Certificate -
AWS::SageMaker::ImageVersion -
AWS::Neptune::DBParameterGroup -
AWS::ODB::CloudVmCluster -
AWS::RolesAnywhere::TrustAnchor -
AWS::Evidently::Launch -
AWS::Detective::Graph -
AWS::Maester::DocumentType -
AWS::SageMaker::ModelPackageGroup -
AWS::S3Express::BucketPolicy -
AWS::Panorama::PackageVersion -
AWS::S3Tables::TableBucketPolicy
드리프트 인식 변경 세트는 3방향 비교를 지원하지 않는 리소스에 대해 이전 배포 상태와 원하는 상태의 비교로 돌아갑니다.