전체 CloudFormation 스택의 드리프트 감지 - AWS CloudFormation

전체 CloudFormation 스택의 드리프트 감지

스택에서 드리프트 감지 작업을 수행하면 스택이 예정 템플릿 구성에서 드리프트되었는지 확인하고, 드리프트 감지를 지원하는 스택의 각 리소스에 대한 드리프트 상태 관련 세부 정보를 반환합니다.

AWS Management Console을 사용하여 전체 스택의 드리프트를 감지하려면
  1. AWS CloudFormation 콘솔(https://console.aws.amazon.com/cloudformation)을 엽니다.

  2. 스택 목록에서 드리프트 감지를 수행할 스택을 선택하십시오. 스택 세부 정보 창에서 Stack actions(스택 작업)를 선택한 후 Detect drift(드리프트 감지)를 선택합니다.

    선택한 스택에 대해 스택 작업 메뉴에서 현재 스택의 드리프트 감지 명령 선택.

    CloudFormation은 선택한 스택에 대해 드리프트 감지가 시작되었음을 나타내는 정보 표시줄을 표시합니다.

  3. CloudFormation에서 드리프트 감지 작업을 완료할 때까지 기다립니다. 드리프트 감지 작업이 완료되면 CloudFormation은 스택의 [드리프트 상태(Drift status)] 및 [마지막 드리프트 확인 시간(Last drift check time)]을 업데이트합니다. 이 필드는 스택 세부 정보 페이지에서 Stack info(스택 정보) 창의 Overview(개요) 섹션에 나열됩니다.

    드리프트 감지 작업은 몇 분이 걸릴 수 있으며, 스택에 포함된 리소스의 수에 따라 다릅니다. 동시에 해당 스택에서 단일 드리프트 감지 작업만을 실행할 수 있습니다. CloudFormation은 정보 표시줄을 닫은 후에도 드리프트 감지 작업을 계속합니다.

  4. 스택 및 리소스에 대한 드리프트 감지 결과를 검토합니다. 스택을 선택한 상태에서 Stack actions(스택 작업) 메뉴에서 View drift results(드리프트 결과 보기)를 선택하십시오.

    CloudFormation은 스택 또는 개별 리소스에서 드리프트 감지가 개시된 마지막 시간에 더해 스택의 전체 드리프트 상태를 나열합니다. 스택은 하나 이상의 리소스가 드리프트된 경우 드리프트된 것으로 간주됩니다.

    선택한 스택의 드리프트 페이지는 전체 스택 드리프트 상태, 드리프트 감지 상태 및 스택 또는 개별 리소스에서 드리프트 감지가 개시된 마지막 시간을 표시.

    [리소스 드리프트 상태(Resource drift status)] 섹션에서 CloudFormation은 각 스택 리소스, 드리프트 상태 및 리소스에서 드리프트 감지가 개시된 마지막 시간을 나열합니다. 각 리소스의 논리적 ID 및 물리적 ID가 표시되어 식별에 도움이 됩니다. 추가로 상태가 MODIFIED인 리소스의 경우 CloudFormation에서 리소스 드리프트 세부 정보를 표시합니다.

    드리프트 상태 열을 사용하여 드리프트 상태에 따라 리소스를 정렬할 수 있습니다.

    1. 수정된 리소스의 세부 정보를 보려면

      1. 수정된 리소스를 선택한 상태에서 View drift details(드리프트 세부 정보 보기)를 선택하십시오.

        CloudFormation은 해당 리소스에 대한 드리프트 세부 정보 페이지를 표시합니다. 이 페이지는 리소스의 예상 및 현재 속성 값, 그리고 둘 사이의 차이를 나열합니다.

        차이를 강조 표시하려면 차이 섹션에서 속성 이름을 선택하십시오.

        • 추가된 속성은 Details(세부 정보) 섹션의 Current(현재) 열에 녹색으로 강조 표시됩니다.

        • 삭제된 속성은 Details(세부 정보) 섹션의 Expected(예상) 열에 붉은색으로 강조 표시됩니다.

        • 값이 변경된 속성의 경우 Expected현재 열 모두에서 노란색으로 강조 표시됩니다.

    드리프트 세부 정보 페이지의 리소스 드리프트 상태 섹션에는 드리프트 감지를 지원하는 스택의 각 리소스에 대한 드리프트 정보가 포함되어 있습니다. 세부 정보에는 드리프트 상태와 예상 및 현재 속성 값이 포함되어 있습니다.
AWS CLI을 사용하여 전체 스택의 드리프트를 감지하려면

AWS CLI를 사용하여 전체 스택의 드리프트를 감지하려면 aws cloudformation 명령을 사용합니다.

  • detect-stack-drift는 스택의 드리프트 감지 작업을 개시합니다.

  • describe-stack-drift-detection-status는 스택 드리프트 감지 작업의 상태를 모니터링합니다.

  • describe-stack-resource-drifts는 스택 드리프트 감지 작업의 세부 정보를 검토합니다.

  1. detect-stack-drift를 사용하여 전체 스택의 드리프트를 감지합니다. 스택 이름 또는 ARN을 지정합니다. 또한 이 드리프트 감지 작업에 대한 필터로 사용하고자 하는 특정 리소스의 논리적 ID를 지정할 수도 있습니다.

    $ aws cloudformation detect-stack-drift --stack-name my-stack-with-resource-drift { "StackDriftDetectionId": "624af370-311a-11e8-b6b7-500cexample" }
  2. 스택 드리프트 감지 작업은 오래 걸릴 수 있기 때문에 describe-stack-drift-detection-status를 사용하여 스택 드리프트 감지 작업의 상태를 모니터링합니다. 이 명령은 detect-stack-drift 명령에서 반환된 스택 드리프트 감지 ID를 가져옵니다.

    아래 예제에서 위 예제의 detect-stack-drift에서 반환된 스택 드리프트 감지 ID를 가져와 이를 파라미터로 describe-stack-drift-detection-status에 전달했습니다. 파라미터는 드리프트 감지 작업이 완료되었고, 단일 스택 리소스가 드리프트되었으며, 전체 스택이 결과적으로 드리프트된 것으로 간주되는 것을 보여주는 작업 세부 정보를 반환합니다.

    $ aws cloudformation describe-stack-drift-detection-status --stack-drift-detection-id 624af370-311a-11e8-b6b7-500cexample { "StackId": "arn:aws:cloudformation:us-east-1:099908667365:stack/my-stack-with-resource-drift/489e5570-df85-11e7-a7d9-50example", "StackDriftDetectionId": "624af370-311a-11e8-b6b7-500cexample", "StackDriftStatus": "DRIFTED", "Timestamp": "2018-03-26T17:23:22.279Z", "DetectionStatus": "DETECTION_COMPLETE", "DriftedStackResourceCount": 1 }
  3. 스택 드리프트 감지 작업이 완료될 때 describe-stack-resource-drifts 명령을 사용하여 결과를 검토합니다. 결과에는 드리프트된 리소스에 대한 실제 및 예상 속성 값이 포함됩니다.

    아래 예제에서는 stack-resource-drift-status-filters 파라미터를 사용하여 수정 또는 삭제된 리소스에 대한 스택 드리프트 정보를 요청합니다. 요청을 통해 수정된 리소스에 대한 정보가 반환되며, 여기에는 값이 변경된 속성에 대한 세부 정보가 포함됩니다. 삭제된 리소스가 없었습니다.

    $ aws cloudformation describe-stack-resource-drifts --stack-name my-stack-with-resource-drift --stack-resource-drift-status-filters MODIFIED DELETED { "StackResourceDrifts": [ { "StackId": "arn:aws:cloudformation:us-east-1:099908667365:stack/my-stack-with-resource-drift/489e5570-df85-11e7-a7d9-50example", "ActualProperties": "{\"ReceiveMessageWaitTimeSeconds\":0,\"DelaySeconds\":120,\"RedrivePolicy\":{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:099908667365:my-stack-with-resource-drift-DLQ-1BCY7HHD5QIM3\",\"maxReceiveCount\":12},\"MessageRetentionPeriod\":345600,\"MaximumMessageSize\":262144,\"VisibilityTimeout\":60,\"QueueName\":\"my-stack-with-resource-drift-Queue-494PBHCO76H4\"}", "ResourceType": "AWS::SQS::Queue", "Timestamp": "2018-03-26T17:23:34.489Z", "PhysicalResourceId": "https://sqs.us-east-1.amazonaws.com/099908667365/my-stack-with-resource-drift-Queue-494PBHCO76H4", "StackResourceDriftStatus": "MODIFIED", "ExpectedProperties": "{\"ReceiveMessageWaitTimeSeconds\":0,\"DelaySeconds\":20,\"RedrivePolicy\":{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:099908667365:my-stack-with-resource-drift-DLQ-1BCY7HHD5QIM3\",\"maxReceiveCount\":10},\"MessageRetentionPeriod\":345600,\"MaximumMessageSize\":262144,\"VisibilityTimeout\":60,\"QueueName\":\"my-stack-with-resource-drift-Queue-494PBHCO76H4\"}", "PropertyDifferences": [ { "PropertyPath": "/DelaySeconds", "ActualValue": "120", "ExpectedValue": "20", "DifferenceType": "NOT_EQUAL" }, { "PropertyPath": "/RedrivePolicy/maxReceiveCount", "ActualValue": "12", "ExpectedValue": "10", "DifferenceType": "NOT_EQUAL" } ], "LogicalResourceId": "Queue" } ] }