개별 스택 리소스의 드리프트 감지 - AWS CloudFormation

개별 스택 리소스의 드리프트 감지

전체 스택이 아닌 하나의 스택 내 특정 리소스의 드리프트를 감지할 수 있습니다. 이는 특히 특정 리소스가 예상 템플릿 구성과 일치하는지 다시 확인해야 하는 경우 유용합니다.

리소스의 드리프트 감지를 수행할 때 CloudFormation에서는 전체 스택 드리프트 상태와 해당되는 경우 [마지막 드리프트 확인 시간(Last drift check time)]을 업데이트합니다. 예를 들어 드리프트 상태가 IN_SYNC인 스택이 있다고 가정합니다. CloudFormation에서 스택에 포함된 하나 이상의 리소스에 드리프트 감지를 수행하도록 하고, CloudFormation에서 하나 이상의 리소스가 드리프트되었음을 감지합니다. CloudFormation은 스택 드리프트 상태를 DRIFTED로 업데이트합니다. 반대로 드리프트된 단일 리소스로 인해 드리프트 상태가 DRIFTED인 스택이 있다고 가정합니다. 리소스를 예상 속성 값으로 설정한 다음 다시 리소스의 드리프트를 탐지하는 경우 CloudFormation에서 전체 스택에 대한 드리프트를 다시 탐지할 필요 없이 리소스 드리프트 상태 및 스택 드리프트 상태 모두를 IN_SYNC로 업데이트합니다.

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

  2. 스택 목록에서 리소스가 포함된 스택을 선택합니다. CloudFormation이 해당 스택에 대한 스택 세부 정보를 표시합니다.

  3. 왼쪽 탐색 창의 스택에서 스택 동작을 선택한 다음 드리프트 감지를 선택합니다.

  4. 리소스 드리프트 상태에서 리소스를 선택한 다음 리소스 드리프트 상태를 선택합니다.

    CloudFormation에서는 선택한 리소스의 드리프트 감지를 수행합니다. 성공하면 CloudFormation은 리소스의 드리프트 상태를 업데이트하고 필요한 경우 전체 스택 드리프트 상태를 업데이트합니다. CloudFormation은 또한 드리프트 감지가 리소스 및 스택 전체에서 마지막으로 수행된 시간에 대한 타임스탬프를 업데이트합니다. 리소스가 수정된 경우 CloudFormation에서 리소스의 예상 및 현재 속성 값에 대한 세부 드리프트 정보를 표시합니다.

  5. 리소스에 대한 드리프트 감지 결과를 검토합니다.

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

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

        CloudFormation에서 리소스의 예상 및 현재 속성 값, 그리고 둘 사이의 차이를 비롯한 해당 리소스의 드리프트 세부 정보를 표시합니다.

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

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

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

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

    드리프트 세부 정보 페이지의 리소스 드리프트 상태 섹션에는 드리프트 감지를 지원하는 스택의 각 리소스에 대한 드리프트 정보가 포함되어 있습니다. 세부 정보에는 드리프트 상태와 예상 및 현재 속성 값이 포함되어 있습니다.
AWS CLI을 사용하여 개별 리소스의 드리프트를 감지하려면
  • AWS CLI를 사용하여 개별 리소스의 드리프트를 감지하려면 detect-stack-resource-drift 명령을 사용합니다. 리소스와 리소스가 포함된 스택의 논리적 ID를 지정합니다.

    다음 예에서는 특정 스택 리소스인 my-drifted-resource에서 드리프트 탐지 작업을 실행합니다. 응답을 통해 리소스가 수정되었음을 확인하는 정보가 반환되며, 여기에는 값이 변경된 속성에 대한 세부 정보가 포함됩니다.

    aws cloudformation detect-stack-resource-drift \ --stack-name my-stack-with-resource-drift \ --logical-resource-id my-drifted-resource

    출력:

    { "StackResourceDrift": { "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-26T18:54:28.462Z", "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": "my-drifted-resource" } }