ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AWS CLI 实战指南:使用 `aws apigateway update-account` 配置 API Gateway 的 CloudWatch 日志 IAM 角色

AWS CLI 实战指南:使用 `aws apigateway update-account` 配置 API Gateway 的 CloudWatch 日志 IAM 角色 AWS CLI 实战指南使用aws apigateway update-account配置 API Gateway 的 CloudWatch 日志 IAM 角色【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli导读本文以 AWS CLI 官方示例文档 awscli/examples/apigateway/update-account.rst 为核心骨架完整讲解aws apigateway update-account命令的用法如何通过 JSON Patch 语义修改 API Gateway 账户级配置特别是将cloudwatchRoleArn替换为具备 CloudWatch Logs 写权限的 IAM 角色从而让 API Gateway 能够将访问日志与执行日志写入 CloudWatch Logs。读完本文你将掌握该命令的完整语法、--patch-operations参数的五要素结构、返回的Account资源字段含义并能结合get-account命令验证变更是否生效同时理解其底层的UpdateAccountAPI 实现HTTPPATCH /account与相关异常处理。一、命令定位update-account解决什么问题API Gateway 的Account 资源表示与 API Gateway 服务关联的 AWS 账户级配置。从本仓库的服务模型 awscli/botocore/data/apigateway/2015-07-09/service-2.json 中可以看到Account结构体第 2176-2196 行包含四个成员字段类型说明cloudwatchRoleArnString当前账户用于 Amazon CloudWatch 的 IAM 角色 ARNthrottleSettingsThrottleSettings当前账户配置的 API 请求限流设置featuresListOfString账户支持的功能列表启用 Usage Plans 时包含UsagePlans条目apiKeyVersionString账户使用的 API Key 版本aws apigateway update-account对应服务模型中的UpdateAccount操作其 HTTP 定义为PATCH /account第 1760-1776 行作用是“变更当前 Account 资源的信息”。它最典型的落地场景是在首次配置 API Gateway 的 CloudWatch 日志之前必须将cloudwatchRoleArn指向一个授权 API Gateway 写入 CloudWatch Logs 的 IAM 角色否则 API Gateway 无法推送访问日志和执行日志。二、命令语法与--patch-operations参数详解update-account的请求结构非常精简。服务模型中的UpdateAccountRequest第 6975-6983 行仅有一个成员{ patchOperations: [ ... ] // 类型ListOfPatchOperation }即全部变更都通过--patch-operations以JSON Patch 操作列表的形式提交。每个 Patch 操作对应服务模型中的PatchOperation结构体第 5887-5907 行包含四个可选字段字段类型作用opString操作类型合法值add、remove、replace、move、copy、test。注意并非所有资源都支持全部操作对资源应用不支持的操作会返回错误pathString操作目标使用JSON Pointer语法定位资源内的属性。例如属性{name: value}对应的 path 是/name若属性值中的路径名包含/需转义为~1valueString更新操作add/replace的新目标值当值是 JSON 对象时在 Linux Shell 中需用一对单引号包裹fromStringcopy/move操作的源位置JSON Pointer例如将 Canary 部署 ID 复制到正式部署 ID命令行中的书写格式为aws apigateway update-account \ --patch-operations opreplace,path/cloudwatchRoleArn,valuearn:aws:iam::123412341234:role/APIGatewayToCloudWatchLogsop、path、value以逗号分隔的keyvalue形式组合成单个 Patch 操作需要多个操作时用空格分隔多个这样的参数组即可。三、实战示例替换 CloudWatch 日志 IAM 角色 ARN以下命令来自官方示例 awscli/examples/apigateway/update-account.rst它执行一次replace操作将账户的cloudwatchRoleArn更新为目标角色aws apigateway update-account --patch-operations opreplace,path/cloudwatchRoleArn,valuearn:aws:iam::123412341234:role/APIGatewayToCloudWatchLogs命令成功后的返回结果Account结构体{ cloudwatchRoleArn: arn:aws:iam::123412341234:role/APIGatewayToCloudWatchLogs, throttleSettings: { rateLimit: 1000.0, burstLimit: 2000 } }要点说明path使用/cloudwatchRoleArn指向Account.cloudwatchRoleArn字段value传入目标 IAM 角色的完整 ARN例如arn:aws:iam::123412341234:role/APIGatewayToCloudWatchLogs该角色需要在 AWS 侧预先创建并具备允许 API Gateway 写入 CloudWatch Logs 的权限策略角色 ARN 由cloudwatchRoleArn字段承载即服务模型文档所述“当前账户的 CloudWatch 角色 ARN”返回的throttleSettings包含rateLimit每秒目标请求速率Double 类型与burstLimit突发速率上限Integer 类型详见服务模型中的ThrottleSettings第 6897-6909 行。四、验证变更配合get-account确认生效完成update-account后建议使用配套的get-account命令读取当前账户配置以确认变更生效。官方示例 awscli/examples/apigateway/get-account.rst 给出了完整用法aws apigateway get-account示例输出{ cloudwatchRoleArn: arn:aws:iam::123412341234:role/APIGatewayToCloudWatchLogsRole, throttleSettings: { rateLimit: 500.0, burstLimit: 1000 } }通过对比get-account返回的cloudwatchRoleArn与update-account提交的value可以确认角色是否已成功切换。从源码结构看get-account读取的正是同一个Account资源对应服务模型中的Account结构体因此两者字段一一对应。五、底层实现UpdateAccountAPI 与异常处理在 awscli/botocore/data/apigateway/2015-07-09/service-2.json 中UpdateAccount操作第 1760-1776 行的完整定义如下HTTP 方法 / URIPATCH /account输入UpdateAccountRequest仅patchOperations输出Account可能抛出的异常BadRequestException、ConflictException、LimitExceededException、NotFoundException、UnauthorizedException、TooManyRequestsException这意味着当传入的 Patch 操作格式非法、path 指向不存在的属性时会收到BadRequestException当请求频率过高触发账户级限流时会收到TooManyRequestsExceptionHTTP 429带Retry-After响应头见服务模型第 6922-6934 行当凭证无权限时会收到UnauthorizedException。AWS CLI 在生成请求时会根据该服务模型将--patch-operations参数序列化为 PATCH 请求体中的patchOperations列表因此模型中的PatchOperation字段op/path/value/from与命令行参数一一对应理解模型即理解命令行。六、常见问题与注意事项op只支持replace吗不是。PatchOperation.op的合法枚举为add、remove、replace、move、copy、test见服务模型Op枚举第 5880-5885 行附近但“并非所有操作都被每种资源支持”对于 Account 资源而言最常用且语义清晰的是replace。value为 JSON 对象时如何传参服务模型文档明确指出当使用 AWS CLI 更新 JSON 值属性时需在 Linux Shell 中用一对单引号包裹 JSON 对象例如value{a: ...}避免 Shell 对花括号和引号进行展开。角色必须预先存在cloudwatchRoleArn指向的 IAM 角色需要提前创建并配置好信任与权限关系update-account本身只负责记录 ARN不负责创建角色。变更后建议立即验证使用 get-account.rst 中的命令复查账户配置并到 CloudWatch Logs 控制台确认日志组中开始出现 API Gateway 写入的日志流。七、小结aws apigateway update-account是 API Gateway 账户级配置管理中不可或缺的命令其本质是向PATCH /account提交一组 JSON Patch 操作。通过--patch-operations opreplace,path/cloudwatchRoleArn,value角色ARN即可完成 CloudWatch 日志 IAM 角色的绑定再借助get-account验证结果。本文涉及的完整示例可直接在仓库的 awscli/examples/apigateway/ 目录下查看含update-account.rst、get-account.rst底层 API 定义与字段说明可在 awscli/botocore/data/apigateway/2015-07-09/service-2.json 中追溯作为深入学习和排查问题的第一手资料。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表