YAOTU INSIGHTS

使用 AWS CLI 查询 App Runner 资源标签:`list-tags-for-resource` 命令详解与实战

使用 AWS CLI 查询 App Runner 资源标签:`list-tags-for-resource` 命令详解与实战
使用 AWS CLI 查询 App Runner 资源标签list-tags-for-resource命令详解与实战【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli标签是 AWS 成本分配、资源治理与权限控制的基础元数据设施。本文围绕 AWS CLI 中 App Runner 服务的list-tags-for-resource命令从官方示例出发结合 aws-cli 仓库内 App Runner 服务模型service-2.json完整讲解如何查询 App Runner 服务等资源上关联的全部标签覆盖参数规格、响应结构、标签约束、错误处理以及配套的tag-resource/untag-resource标签生命周期管理帮助你在此基础上快速上手标签自动化运维。一、命令概览它解决什么问题list-tags-for-resource是 AWS App Runner 的标签查询接口用于列出与某个 App Runner 资源例如 App Runner 服务相关联的全部标签。标签以键值对Key-Value Pair形式存在通常被用于成本归因按部门、项目或环境维度拆分账单资源筛选在list-services等操作中辅助识别目标服务自动化运维根据标签驱动 CI/CD 流程或清理策略。在 aws-cli 仓库中该命令的官方使用示例位于 awscli/examples/apprunner/list-tags-for-resource.rst。而从仓库内置的 API 服务模型 awscli/botocore/data/apprunner/2020-05-15/service-2.json 可以看到ListTagsForResource是 App Runner API 的一个标准操作采用POST方法、请求路径为/输入与输出分别由ListTagsForResourceRequest和ListTagsForResourceResponse两个结构体定义。二、完整实战示例继承官方文档以下示例演示如何列出与某个 App Runner 服务关联的全部标签内容与官方示例文档一致。aws apprunner list-tags-for-resource \ --cli-input-json file://input.json其中input.json的文件内容为{ ResourceArn: arn:aws:apprunner:us-east-1:123456789012:service/python-app/8fe1e10304f84fd2b0df550fe98a71fa }命令执行成功后返回的输出如下{ Tags: [ { Key: Department, Value: Retail }, { Key: CustomerId, Value: 56439872357912 } ] }从输出可以看到该 App Runner 服务上挂载了两个标签DepartmentRetail与CustomerId56439872357912。Tags是响应中唯一的字段它是一个由Tag结构体组成的列表每个Tag由Key与Value两个成员构成见 service-2.json 中ListTagsForResourceResponse与Tag的定义。提示--cli-input-json file://input.json是 AWS CLI 通用的参数注入方式将 JSON 文件中的字段映射为请求参数。对于只有单个必填参数的list-tags-for-resource也可以直接使用--resource-arn参数简化调用aws apprunner list-tags-for-resource \ --resource-arn arn:aws:apprunner:us-east-1:123456789012:service/python-app/8fe1e10304f84fd2b0df550fe98a71fa三、请求参数详解ListTagsForResourceRequest结构体见 service-2.json 中第 2009 行起仅定义一个必填成员参数类型必填说明ResourceArnAppRunnerResourceArn字符串是需要查询标签列表的 App Runner 资源 ARN必须是 App Runner 资源的 ARNResourceArn对应AppRunnerResourceArn形状其约束为最小长度 1最大长度 1011并满足arn:aws(-[\w])*:[a-z0-9-\.]{0,63}:[a-z0-9-\.]{0,63}:[0-9]{12}:(\w|\/|-){1,1011}的正则模式。示例中的 ARNarn:aws:apprunner:us-east-1:123456789012:service/python-app/8fe1e10304f84fd2b0df550fe98a71fa遵循arn:aws:apprunner:region:account-id:service/服务名/服务ID的通用格式。值得注意的一点是ListTagsForResourceRequest中required列表只有ResourceArn这意味着该操作不支持分页参数一次请求即返回该资源上全量的标签列表——这与list-services、list-operations等支持MaxResults/NextToken分页的操作不同。四、响应结构解析ListTagsForResourceResponse见 service-2.json 中第 2019 行起仅包含一个可选成员字段类型说明TagsTagListTag列表与该资源关联的标签键值对列表Tag结构体第 2652 行起包含Key标签键类型为TagKeyValue标签值类型为TagValue。响应中Tags为空数组或缺失时表示该资源当前没有任何标签。五、标签本身的约束与规格从 service-2.json 中TagKey、TagValue形状的定义可以提炼出 App Runner 标签的规格约束约束项TagKeyTagValue最小长度10最大长度128256正则模式^(?!aws:)..*几点关键结论键不能以aws:前缀开头TagKey的模式^(?!aws:).是负向前瞻断言明确禁止标签键以aws:开头。这是因为aws:前缀被保留给 AWS 系统内部生成的标签例如aws:createdBy用户创建的标签无法使用该前缀。值可以为空字符串TagValue最小长度为 0表示允许设置只有键、没有值的标签。大小写敏感标签键和值均区分大小写Department与department是两个不同的键。在创建标签时如果违反上述约束例如键超过 128 字符或以aws:开头请求会以InvalidRequestException失败。六、完整的标签生命周期打标签、查标签、删标签list-tags-for-resource通常不是孤立使用的它常与 App Runner 的标签写入、删除操作配合形成完整的标签管理闭环。以下操作对应仓库中的三个示例文档1. 添加标签tag-resource向 App Runner 服务添加两个标签示例见 awscli/examples/apprunner/tag-resource.rstaws apprunner tag-resource \ --cli-input-json file://input.json{ ResourceArn: arn:aws:apprunner:us-east-1:123456789012:service/python-app/8fe1e10304f84fd2b0df550fe98a71fa, Tags: [ { Key: Department, Value: Retail }, { Key: CustomerId, Value: 56439872357912 } ] }该命令执行成功后不产生任何输出TagResourceResponse是空结构体。从服务模型看tag-resource的行为是如果某个键对资源是全新的则新增该标签如果键已存在则更新其值。2. 查询标签list-tags-for-resource即在第二节中执行的命令用于确认tag-resource的结果已生效返回与该服务关联的全部标签。3. 删除标签untag-resource通过TagKeys指定要移除的标签键列表对应示例见 awscli/examples/apprunner/untag-resource.rstaws apprunner untag-resource \ --resource-arn arn:aws:apprunner:us-east-1:123456789012:service/python-app/8fe1e10304f84fd2b0df550fe98a71fa \ --tag-keys Department该命令同样不返回输出。删除后再次执行list-tags-for-resourceTags中将不再包含被移除的键。这一写入 → 查询 → 删除 → 复核的模式非常适合脚本化地实现标签的幂等治理先list-tags-for-resource读取现状再对比期望标签集合通过tag-resource与untag-resource进行差异同步。七、错误场景与处理根据 service-2.json 中ListTagsForResource操作的errors定义该命令可能返回以下异常异常类型含义ResourceNotFoundException指定的ResourceArn不存在例如服务已被删除或 ARN 拼写错误InternalServiceErrorExceptionApp Runner 服务端内部错误通常为临时性故障可稍后重试InvalidRequestException请求无效例如 ARN 格式不符合AppRunnerResourceArn的正则约束InvalidStateException资源处于不适用于该操作的状态在实际运维中最常见的两类错误是ARN 格式错误触发InvalidRequestException——请检查 ARN 是否满足arn:aws:apprunner:region:account-id:service/...结构且长度在 11011 之间资源已被删除触发ResourceNotFoundException——App Runner 服务的 ARN 中带有唯一的服务 ID如示例中的8fe1e10304f84fd2b0df550fe98a71fa服务删除后 ARN 立即失效。编写自动化脚本时建议对上述异常做显式捕获与区分处理避免将服务端瞬时错误与资源不存在混为一谈。八、小结list-tags-for-resource是 App Runner 标签体系中的读操作单参数、无分页、返回全量标签列表使用成本极低。配合仓库中的 tag-resource.rst 与 untag-resource.rst 示例可以轻松构建标签的增查删完整闭环。在成本账单拆分、资源清查和自动化清理等场景中它都是首选的标签数据来源。掌握其参数约束ResourceArn的 ARN 格式与标签规格键最长 128、不可用aws:前缀值最长 256后即可在脚本中安全、稳定地使用该命令。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考