为何AWS CLI执行rds describe-db-snapshots命令无法返回Aurora快照?
问题背景
- 在AWS控制台us-east-1区域可查看到77个标记为“系统”的快照
- 执行如下命令尝试拉取全量快照列表:
aws rds describe-db-snapshots --region us-east-1 --include-shared --include-public --no-paginate --output text
- 命令仅返回35条结果
- 已完成的前置验证:
- 分别在AWS CloudShell环境、本地终端运行命令,返回结果完全一致;本地终端配置的凭证为IAM控制台获取的访问密钥与私有密钥
- 所用凭证已拥有当前账号最高权限,不存在权限拦截导致的结果缺失
- 逐字段校验所有返回结果,记录的
engine字段取值均为postgres,无任何Aurora类型快照 - 手动添加筛选参数验证结果:
- 增加筛选条件
--filters "Name=engine,Values=aurora-postgresql"后,返回结果为空 - 增加筛选条件
--filters "Name=engine,Values=postgres"后,可正常返回30余条非Aurora快照记录
- 增加筛选条件
核心疑问
为什么控制台可查看到的Aurora系列快照,会被describe-db-snapshots命令排除在返回结果之外?
根因说明
Aurora集群级快照与传统单实例RDS快照属于完全独立的两类API资源,不会通过describe-db-snapshots接口返回
- 传统单实例RDS(如原生postgres、mysql引擎)生成的快照,归属
DB Snapshot资源范畴,对应查询接口就是describe-db-snapshots - Aurora集群自动生成的系统快照(也就是控制台中和普通RDS系统快照混排展示的条目),归属
Cluster Snapshot资源范畴,对应查询接口为describe-db-cluster-snapshots - 控制台的快照列表页做了聚合展示:将单实例DB快照、Aurora集群快照、跨账号共享快照、公开可访问快照全部合并到同一页面呈现,未做明确的资源类型区分,很容易造成“所有展示条目都属于DB快照资源”的误判
- 之前筛选
aurora-postgresql引擎无返回结果,本质是当前查询接口根本不包含Aurora集群快照的元数据,和引擎筛选逻辑无关
验证方法
执行以下命令即可拉取同区域下所有Aurora集群快照记录,返回数量与之前缺失的快照数完全匹配:
aws rds describe-db-cluster-snapshots --region us-east-1 --include-shared --include-public --no-paginate --output text
最终全量快照的总计数逻辑为:describe-db-snapshots返回的单实例快照数 + describe-db-cluster-snapshots返回的集群快照数,与控制台展示的77个快照计数即可对齐。
内容的提问来源于stack exchange,提问作者Neil C. Obremski
相关产品推荐
相关产品推荐

