在单个堆栈资源上检测偏差 - AWS CloudFormation

在单个堆栈资源上检测偏差

您可以在堆栈中的特定资源上检测偏差,而不是在整个堆栈上。当您只需要再次确定特定资源现在是否与其预期的模板配置匹配时,这尤其有用。

当在资源上执行偏差检测时,CloudFormation 还会更新整体堆栈偏差状态和上一次偏差检查时间(如果适用)。例如,假设堆栈的偏差状态为 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. Resource drift status (资源偏差状态) 下面,选择所需资源,然后选择 Detect drift for resource (检测资源偏差)

    CloudFormation 在所选资源上执行偏差检测。如果成功,CloudFormation 会更新资源的偏差状态,并在必要时更新整体堆栈偏差状态。CloudFormation 还会更新上次对资源以及整个堆栈进行偏差检测时的时间戳。如果资源已被修改,则 CloudFormation 会显示有关资源的预期和当前属性值的详细偏差信息。

  5. 查看资源的偏差检测结果。

    1. 查看已修改资源的详细信息。

      1. 选定已修改的资源,选择 View drift details(查看偏差详细信息)。

        CloudFormation 显示该资源的偏差详细信息,包括资源的预期和当前属性值,以及两者之间的任何区别。

        要突出显示区别,请在区别部分中选择属性名称。

        • 添加的属性在 Details(详细信息)部分的 Current(当前)列中以绿色突出显示。

        • 删除的属性在 Details(详细信息)部分的 Expected(预期)列中以红色突出显示。

        • 其值已更改的属性在 Expected (预期)Current (当前) 列中以黄色突出显示。

    
                        偏差详细信息页面上的资源偏差状态部分,其中包含堆栈中支持偏差检测的每个资源的偏差信息。详细信息包括偏差状态以及预期的和当前的属性值。
使用 AWS CLI 在单个资源上检测偏差
  • 要在使用 AWS CLI 的单个资源上检测偏差,使用 aws cloudformation 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" } }