View a markdown version of this page

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

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

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

当在资源上执行偏差检测时,CloudFormation 还会更新整体堆栈偏差状态和上一次偏差检查时间(如果适用)。例如,假设堆栈的偏差状态为 IN_SYNC。您让 CloudFormation 对该堆栈中包含的一个或多个资源执行偏差检测,CloudFormation 检测到这些资源中的一个或多个已偏离。CloudFormation 将堆栈偏差状态更新为 DRIFTED。相反,假设您有一个偏差状态为 DRIFTED 的堆栈,因为只有一个偏离的资源。如果您将该资源设置回其预期的属性值,然后再次在该资源上检测偏差,则 CloudFormation 会将资源偏差状态和堆栈偏差状态更新为 IN_SYNC,而无需您再次在整个堆栈上检测偏差。

使用 AWS 管理控制台 在单个资源上检测偏差
  1. 通过以下网址打开 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 的单个资源上检测偏差,使用 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" } }