在单个堆栈资源上检测偏差
您可以在堆栈中的特定资源上检测偏差,而不是在整个堆栈上。当您只需要再次确定特定资源现在是否与其预期的模板配置匹配时,这尤其有用。
当在资源上执行偏差检测时,CloudFormation 还会更新整体堆栈偏差状态和上一次偏差检查时间(如果适用)。例如,假设堆栈的偏差状态为 IN_SYNC
。您让 CloudFormation 对该堆栈中包含的一个或多个资源执行偏差检测,CloudFormation 检测到这些资源中的一个或多个已偏离。CloudFormation 将堆栈偏差状态更新为 DRIFTED
。相反,假设您有一个偏差状态为 DRIFTED
的堆栈,因为只有一个偏离的资源。如果您将该资源设置回其预期的属性值,然后再次在该资源上检测偏差,则 CloudFormation 会将资源偏差状态和堆栈偏差状态更新为 IN_SYNC
,而无需您再次在整个堆栈上检测偏差。
使用 AWS Management Console 在单个资源上检测偏差
通过以下网址打开 AWS CloudFormation 控制台:https://console.aws.amazon.com/cloudformation
。 -
从堆栈列表中,选择包含所需资源的堆栈。CloudFormation 会显示该堆栈的堆栈详细信息。
-
在左侧导航窗格中的堆栈下,选择堆栈操作,然后选择检测偏差。
-
在 Resource drift status (资源偏差状态) 下面,选择所需资源,然后选择 Detect drift for resource (检测资源偏差)。
CloudFormation 在所选资源上执行偏差检测。如果成功,CloudFormation 会更新资源的偏差状态,并在必要时更新整体堆栈偏差状态。CloudFormation 还会更新上次对资源以及整个堆栈进行偏差检测时的时间戳。如果资源已被修改,则 CloudFormation 会显示有关资源的预期和当前属性值的详细偏差信息。
-
查看资源的偏差检测结果。
-
查看已修改资源的详细信息。
-
选定已修改的资源,选择 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-idmy-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" } }