使用 AWS CLI 查找资源

AWSBeginner
立即练习

介绍

一个报表团队需要检查财务测试设置,同时避免修改生产设置或其他团队的设置。你将找到正确的资源,使列表更易读,并将导出格式更新为 CSV。

请先完成工作区和区域资源实验。CLI 连接和资源已在全新环境中准备好,不需要之前的文件或凭据。使用 Terminal 执行命令,并在上方的 AWS View 中观察变化。

认证考点

认证 考点 本实验练习
Cloud Practitioner (CLF-C02) 任务 3.1 CLI 资源查询与限定范围的运行清单。

实验概览

概念图: 名称前缀筛选财务测试环境的配置,再单独将导出格式更新为 CSV。

查找财务测试设置

在本步骤中,你将从混合资源列表中筛选出本次检查所涉及的财务设置。

上一个实验展示了如何通过 Region 选择地点。这里预先配置的默认区域是 us-east-1:没有 --region 的命令会使用该区域。你仍然可以显式指定 --region us-east-1。

资源清单是资源的列表。查看已准备好的参数清单:

aws ssm describe-parameters

查看每个 Name 和 Description。预发布环境(Staging)是在修改生产环境(production)之前使用的测试环境;生产环境运行正常业务。列表包括财务预发布、财务生产和人力资源(HR)预发布设置。你的两个资源都以 /labex/inventory/finance/staging/ 开头。

官方 Console 以资源表格展示参数元数据。将它的 Name 和 Type 列与 describe-parameters 返回的字段比较。示例中的名称不同;本实验使用 String 参数:

官方 Parameter Store 的 My parameters 表格显示资源名称和类型 — 来源:AWS 博客 — https://aws.amazon.com/blogs/mt/implement-operations-observability-in-landing-zone-environments/。

这个列表足够小,可以直接浏览,但过滤条件能使操作范围更清楚。--parameter-filters 要求服务返回匹配的记录。Key=Name 选择名称,Option=BeginsWith 匹配名称开头,Values=... 提供要匹配的开头:

aws ssm describe-parameters --parameter-filters Key=Name,Option=BeginsWith,Values=/labex/inventory/finance/staging/

你应看到两个名称:report-format 和 report-owner,顺序可能不同。过滤只选择本次任务的资源,不会修改设置。

前缀过滤条件选中财务预发布资源,其他资源不出现在结果中 — 概念图:过滤条件改变返回的列表,不改变资源。其他设置仍然存在。

显示名称并更新导出格式

在本步骤中,你将只显示匹配的名称,然后修改财务预发布设置的导出格式。

响应包含的字段多于你当前需要的字段。--query 选择响应中的部分内容,不改变已存储的数据。在 'Parameters[].Name' 中,Parameters[] 表示返回的记录,.Name 选择这些记录的名称。请保留表达式外的单引号。

在现有过滤条件上添加这个选择表达式:

aws ssm describe-parameters \
  --parameter-filters Key=Name,Option=BeginsWith,Values=/labex/inventory/finance/staging/ \
  --query 'Parameters[].Name'

响应列出两个匹配名称。过滤决定选哪些资源,查询决定显示哪些字段。

字段选择显示资源名称,完整记录保持不变 — 概念图:选择 Name 会在本次响应中隐藏其他字段,不会删除它们。

要使显示更紧凑,添加 --output table:

aws ssm describe-parameters \
  --parameter-filters Key=Name,Option=BeginsWith,Values=/labex/inventory/finance/staging/ \
  --query 'Parameters[].Name' \
  --output table

同样的两个名称以表格显示,改变的只有展示方式。

按名称读取准确的预发布格式设置:

aws ssm get-parameter --name /labex/inventory/finance/staging/report-format

找到 Value:它是 json。这是应用的导出格式,与 CLI 的 JSON 响应格式不同。下游报表导入程序需要 CSV,因此更新这个设置:

aws ssm put-parameter \
  --name /labex/inventory/finance/staging/report-format \
  --type String \
  --value csv \
  --overwrite

再次读取它:

aws ssm get-parameter --name /labex/inventory/finance/staging/report-format

它的值现在是 csv。在 AWS View 中对比 finance staging、production 和 HR:只有 staging 的报表格式发生变化,production 仍为 json,HR 仍为 xlsx。

确认设置并完成检查

在本步骤中,你将确认目标导出格式及其所属团队。

你也可以从单个资源选择一个字段。'Parameter.Value' 读取 Parameter 内的值;--output text 显示该值,不带 JSON 引号:

aws ssm get-parameter \
  --name /labex/inventory/finance/staging/report-format \
  --query 'Parameter.Value' \
  --output text

结果为 csv。确认谁负责这份报表配置:

aws ssm get-parameter \
  --name /labex/inventory/finance/staging/report-owner \
  --query 'Parameter.Value' \
  --output text

结果为 finance。这些是存储的值;之前的元数据列表展示的是名称和描述。

两个存储值确认了目标配置:格式为 csv,所属团队为 finance。其他分组保持不变。接下来,用标签组织名称没有共同前缀的资源。

总结

你找到了 finance staging 设置,选取需要的响应字段,并只修改了目标导出格式。接下来,用团队和环境标签组织资源。

进一步阅读 AWS 官方资料:CLI 服务端筛选与客户端查询.