修改或验证 AWS Role 云账号¶
POST /api/v1/cloud_account/{cloud_account_uuid}/do/modify
路由参数¶
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| cloud_account_uuid | string | Y | 云账号 uuid 允许为空字符串: False |
Body 请求参数¶
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| config | object | Y | 配置 允许为空: False |
| config.roleName | string | 授权角色名或路径(assume_role 支持路径,旧 role 保持原限制) 例子: string 最大长度: 575 允许为空: False |
|
| config.accountName | string | 用户名 例子: string 最大长度: 256 允许为空: False |
|
| config.extraTags | array | 云账号标签;最多 50 项,编辑省略保留,空数组清除 最大长度: 50 允许为空: False |
|
| config.extraTags[*] | object | ||
| config.extraTags[*].key | string | Y | 允许为空: False |
| config.extraTags[*].value | string | Y | 允许为空: False |
| dryRun | boolean | Y | 是否仅校验账号可用性;true 不持久化,false 执行保存,调用方必须显式传值 例子: True 允许为空: False |
参数补充说明¶
端到端步骤参见 通过 OpenAPI 接入 AWS 云账号。示例中的 Endpoint 取自 OpenAPI 站点列表。
仅支持当前工作空间已保存的 AWS assume_role 记录,需要 cloudAccount.accountManage。仅修改 accountName、roleName、extraTags;账号 ID、分区、认证类型和 External ID 不可通过本接口更改。
校验和保存¶
- 客户 Role/信任策略配置完成后,传
{"config":{},"dryRun":true},返回saved=false和本次验证结果,不写库、不下发采集脚本、不产生修改审计。 - 传
dryRun=false会重新验证并按既有逻辑保存,成功返回saved=true。验证失败仍可保存isAvailable=false,不能只凭 HTTP 200 判断授权成功。 - 已有采集器会按 Front 现有逻辑重同步;相同配置重试也可能再次下发。账号配置保存幂等不等于下游 exactly-once,不把 dryRun 成功当作后续保存必成功的承诺。
- 标签省略表示保留,
[]清空。RoleName 支持路径,不接受完整 ARN;普通修改保留原 External ID。
返回和失败¶
返回 content.uuid、content.saved、content.operationResult 和 content.validationResult(以及公共 content.declaration),两组结果分别携带 status/code/message;操作状态为 completed/failed,验证状态为 not_run/passed/failed。saved 在未确认提交时为 null;dryRun 明确为 false,正式成功明确为 true。验证已完成后保存/锁失败仍保留本次验证结论,HTTP 保留错误状态。
非目标认证类型、跨空间或已删除 UUID 在业务修改前拒绝,不触发 STS、脚本或迁移。对 IAM 传播延迟做有上限退避,重用原 UUID/External ID;失败查询当前配置并核对 traceId,不盲目更换授权标识。
请求例子¶
curl -X POST '<Endpoint>/api/v1/cloud_account/<cloud_account_uuid>/do/modify' -H 'DF-API-KEY: <DF-API-KEY>' -H 'Content-Type: application/json' --data-raw '{"config": {}, "dryRun": true}'
响应¶
{
"code": 200,
"success": true,
"errorCode": "",
"message": "",
"content": {
"uuid": "clac_example",
"saved": false,
"operationResult": {
"status": "completed",
"code": "",
"message": ""
},
"validationResult": {
"status": "passed",
"code": "",
"message": ""
},
"declaration": {}
},
"traceId": "TRACE-example"
}