使用 aws cloudformation describe-stack-drift-detection-status 检查堆栈漂移检测任务状态
使用 aws cloudformation describe-stack-drift-detection-status 检查堆栈漂移检测任务状态【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本指南讲解 AWS CLI 中aws cloudformation describe-stack-drift-detection-status命令的完整用法从detect-stack-drift拿到漂移检测 ID 开始到轮询该命令确认检测是否完成、判断堆栈是否发生漂移再到用describe-stack-resource-drifts定位具体漂移资源形成一条完整的堆栈漂移排查链路。读完本文你将掌握这条命令的参数、返回字段、状态枚举含义以及如何用 Shell 脚本自动化发起检测 → 轮询状态 → 查看漂移明细的整套流程。命令概述为什么需要查看漂移检测状态AWS CloudFormation 的**堆栈漂移检测stack drift detection**用于发现堆栈的实际配置与期望配置模板 模板参数之间的差异。这种差异通常由带外修改out-of-band changes引起例如有人通过控制台或直接 API 手动改动了某资源的属性。CloudFormation 认为只要堆栈中有一个资源发生了漂移整个堆栈就视为DRIFTED。漂移检测是异步操作detect-stack-drift提交任务后立即返回一个StackDriftDetectionId而真正扫描资源需要时间。describe-stack-drift-detection-status正是用来查询这个异步任务执行进度的命令。在服务模型文件中可以看到DescribeStackDriftDetectionStatus是一个 POST 请求操作其接口文档明确指出使用DetectStackDrift发起检测并拿到StackDriftDetectionId后用本操作监控进度检测完成后再用DescribeStackResourceDrifts返回堆栈及其资源的漂移详情。这三个命令在 AWS CLI 中的对应实现为aws cloudformation detect-stack-drift发起漂移检测返回检测 IDaws cloudformation describe-stack-drift-detection-status查询检测任务状态本文主角aws cloudformation describe-stack-resource-drifts查看已检测资源的具体漂移差异典型使用流程从发起检测到确认结果漂移检测的命令行闭环如下发起检测并记录返回的检测 IDaws cloudformation detect-stack-drift --stack-name my-stack输出{ StackDriftDetectionId: 1a229160-e4d9-xmpl-ab67-0a4f93df83d4 }这个 ID 是后续所有查询的入参。轮询检测状态直到DetectionStatus变为DETECTION_COMPLETE或DETECTION_FAILEDaws cloudformation describe-stack-drift-detection-status \ --stack-drift-detection-id 1a229160-e4d9-xmpl-ab67-0a4f93df83d4输出{ StackId: arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204, StackDriftDetectionId: 1a229160-e4d9-xmpl-ab67-0a4f93df83d4, StackDriftStatus: DRIFTED, DetectionStatus: DETECTION_COMPLETE, DriftedStackResourceCount: 1, Timestamp: 2019-10-02T05:54:30.902Z }查看漂移明细若检测到漂移aws cloudformation describe-stack-resource-drifts --stack-name my-stack输出会列出发生漂移的资源、期望属性与实际属性的差异详见后文完整链路示例。参数详解根据输入模型定义该命令只有一个必填参数参数必填类型说明--stack-drift-detection-id是String漂移检测操作的 ID来自detect-stack-drift的返回值。CloudFormation 每次执行检测都会生成新的检测 ID 和新的结果。命令行用法aws cloudformation describe-stack-drift-detection-status \ --stack-drift-detection-id detection-id对应的底层请求构造由 AWS CLI 的命令加载与参数序列化框架处理具体实现在 awscli/argparser.py、awscli/argprocess.py 等命令解析模块中服务端模型操作定义、输入输出 shape、错误类型则统一在 service-2.json 中声明。输出字段详解根据输出模型定义返回 JSON 包含以下字段字段类型说明StackIdString堆栈的唯一 IDARN用于定位堆栈。StackDriftDetectionIdString本次漂移检测操作的 ID。StackDriftStatusString堆栈实际配置与期望配置模板 模板参数的比较状态取值见下文。DetectionStatusString漂移检测操作自身的执行状态取值见下文。DetectionStatusReasonString检测操作处于当前状态的原因仅在检测失败等场景下有意义。DriftedStackResourceCountInteger发生漂移的堆栈资源总数。在检测操作到达DETECTION_COMPLETE之前为null若堆栈IN_SYNC该值为 0。TimestampTimestamp漂移检测操作发起的时间。其中必返回字段为StackId、StackDriftDetectionId、DetectionStatus、Timestamp四项见输出模型。StackDriftStatus 的四种取值由 StackDriftStatus 枚举定义取值含义DRIFTED堆栈与期望的模板配置存在差异。只要有一个资源漂移整个堆栈即视为DRIFTED。IN_SYNC堆栈实际配置与期望的模板配置一致。NOT_CHECKEDCloudFormation 尚未检查该堆栈是否与期望模板配置存在差异。UNKNOWNCloudFormation 无法对堆栈中的某个资源执行漂移检测需结合DetectionStatusReason查看原因。DetectionStatus 的三种取值由 StackDriftDetectionStatus 枚举定义取值含义DETECTION_IN_PROGRESS漂移检测操作正在进行中。DETECTION_COMPLETE对堆栈中所有支持漂移检测的资源检测均已成功完成不支持漂移检测的资源保持未检查状态。若发起检测时指定了逻辑资源 ID 过滤器则仅检查这些逻辑 ID 对应的资源。DETECTION_FAILED堆栈中至少一个资源的漂移检测失败。CloudFormation 成功完成检测的资源仍会返回结果。关于 StackDriftStatus 为 UNKNOWN 的补充在describe-stack-drift-detection-status的上下文中当StackDriftStatus为UNKNOWN时说明 CloudFormation 未能对堆栈中的某些资源运行漂移检测此时应重点查看DetectionStatusReason字段获取具体原因。同一语义在堆栈级的StackDriftInformation/StackDriftInformationSummary结构service-2.json中也有体现describe-stacks等命令返回的堆栈概要信息同样会携带该状态。完整链路示例定位一次真实的资源漂移下面展示三个命令如何协同工作完整还原官方示例文档 describe-stack-drift-detection-status.rst、detect-stack-drift.rst 与 describe-stack-resource-drifts.rst 中的场景。假设堆栈my-stack中的某个 AWS Lambda 函数被人在带外改动了MemorySize和Timeout。依次执行# 1. 发起漂移检测 aws cloudformation detect-stack-drift --stack-name my-stack # 2. 查询检测状态将上一步返回的 ID 填入 aws cloudformation describe-stack-drift-detection-status \ --stack-drift-detection-id 1a229160-e4d9-xmpl-ab67-0a4f93df83d4检测完成后的状态输出显示堆栈已漂移{ StackId: arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204, StackDriftDetectionId: 1a229160-e4d9-xmpl-ab67-0a4f93df83d4, StackDriftStatus: DRIFTED, DetectionStatus: DETECTION_COMPLETE, DriftedStackResourceCount: 1, Timestamp: 2019-10-02T05:54:30.902Z }# 3. 查看漂移资源的具体差异 aws cloudformation describe-stack-resource-drifts --stack-name my-stack输出中可以看到被修改的 Lambda 函数及其属性级差异{ StackResourceDrifts: [ { StackId: arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204, LogicalResourceId: function, PhysicalResourceId: my-function-SEZV4XMPL4S5, ResourceType: AWS::Lambda::Function, StackResourceDriftStatus: MODIFIED, PropertyDifferences: [ { PropertyPath: /MemorySize, ExpectedValue: 128, ActualValue: 256, DifferenceType: NOT_EQUAL }, { PropertyPath: /Timeout, ExpectedValue: 900, ActualValue: 22, DifferenceType: NOT_EQUAL } ], Timestamp: 2019-10-02T05:54:44.064Z } ] }通过PropertyDifferences中的ExpectedValue期望值与ActualValue实际值对比可以精确定位是哪条属性、从什么值被改成了什么值——这正是describe-stack-drift-detection-status最终要导向的证据。实战脚本轮询直到检测完成由于检测是异步的实践中通常需要轮询。下面是一个可直接复制的 Bash 示例DETECTION_ID$(aws cloudformation detect-stack-drift \ --stack-name my-stack \ --query StackDriftDetectionId --output text) STATUSDETECTION_IN_PROGRESS while [ $STATUS DETECTION_IN_PROGRESS ]; do STATUS$(aws cloudformation describe-stack-drift-detection-status \ --stack-drift-detection-id $DETECTION_ID \ --query DetectionStatus --output text) echo Detection status: $STATUS sleep 5 done aws cloudformation describe-stack-drift-detection-status \ --stack-drift-detection-id $DETECTION_ID要点说明通过--query与--output text提取单个字段便于脚本比较该能力由 AWS CLI 的输出格式化与 JMESPath 查询机制提供相关实现见 awscli/formatter.py。轮询间隔建议设为 510 秒检测通常在几十秒内完成但大型堆栈耗时更久。循环结束后再次调用该命令即可拿到包含StackDriftStatus与DriftedStackResourceCount的完整 JSON。若需在 CI/CD 中快速判断堆栈是否漂移并直接失败可结合DriftedStackResourceCountCOUNT$(aws cloudformation describe-stack-drift-detection-status \ --stack-drift-detection-id $DETECTION_ID \ --query DriftedStackResourceCount --output text) if [ $COUNT ! 0 ]; then echo Stack drifted: $COUNT resource(s) out of sync. exit 1 fi注意事项检测 ID 仅对本次检测有效每次调用detect-stack-drift都会产生新的StackDriftDetectionId与新的检测结果见输入模型文档。CloudFormation 对每个堆栈保留的漂移结果数量与时长可能不同不要长期依赖旧 ID。DriftedStackResourceCount在检测完成前为null轮询脚本中若直接读取该值需注意空值处理。并非所有资源类型都支持漂移检测不支持的资源不会被检查也不会出现在describe-stack-resource-drifts的结果中。DetectionStatus为DETECTION_FAILED时部分资源仍可能有可用结果应先读DetectionStatusReason排查失败原因再对成功完成检测的资源做分析。本仓库内describe-stack-drift-detection-status的官方示例位于 awscli/examples/cloudformation/describe-stack-drift-detection-status.rst与之配套的detect-stack-drift、describe-stack-resource-drifts示例分别位于 detect-stack-drift.rst 和 describe-stack-resource-drifts.rst命令的完整 API 模型与字段枚举定义可在 service-2.json 中按DescribeStackDriftDetectionStatus关键字检索确认。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

mold 内置 TBB Flow Graph 边(Edges)机制详解:make_edge 建边、remove_edge 拆边与消息传递协议

mold 内置 TBB Flow Graph 边(Edges)机制详解:make_edge 建边、remove_edge 拆边与消息传递协议

mold 内置 TBB Flow Graph 边(Edges)机制详解:make_edge 建边、remove_edge 拆边与消息传递协议 【免费下载链接】mold mold: A Modern Linker 🦠 项目地址: https://gitcode.com/GitHub_Trending/mo/mold 本篇文章以 mold…

2026/11/13 21:10:17 阅读更多 →
HTTPS与SSL证书排查实战:从部署到运维的避坑指南

HTTPS与SSL证书排查实战:从部署到运维的避坑指南

先说个我自己处理过的事故。白天还正常的站点,晚上被人截图丢过来,地址栏前面一个大大的红叉加“不安全”。我第一反应是“证书是不是没续费”,登录后台一看,证书已经过期十几个小时。就这么一小段时间,在线业务的流失…

2026/11/13 11:23:24 阅读更多 →
6轴机械臂正逆运动学解析:从DH建模到球形腕解耦求解

6轴机械臂正逆运动学解析:从DH建模到球形腕解耦求解

做机器人控制这几年,绕不开的一个槛就是6轴机械臂正逆运动学。同事常说“正解谁都会写,逆解才是劝退大师”,话糙理不糙。如果你手头的机械臂是拟人臂加球形腕的结构——肩部两个轴、肘部一个轴、腕部三个轴交于一点——那恭喜你,逆…

2026/10/23 20:39:04 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻