# 更新策略
#### 功能介绍
更新策略。
#### URI
PUT /v1/policy-engines/{policy_engine_id}/policies/{policy_id}
表1路径参数 
| 参数               | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| policy_engine_id | 是    | String | **参数解释**： 策略集ID，系统自动生成的唯一标识符。 **约束限制**： 不涉及。 **取值范围**： 只能由英文字母、数字及"-"、"_"组成，长度为12\~59个字符。 **默认取值**： 不涉及。 |
| policy_id        | 是    | String | **参数解释**： 策略ID，系统自动生成的唯一标识符。 **约束限制**： 不涉及。 **取值范围**： 只能由英文字母、数字及"-"、"_"组成，长度为1\~128个字符。 **默认取值**： 不涉及。  |
   
#### 请求参数
表2请求Body参数 
| 参数              | 是否必选 | 参数类型                                                               | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| description     | 否    | String                                                             | **参数解释**： 策略的更新描述。 **约束限制**： 不涉及。 **取值范围**： 长度为1\~4096个字符。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                       |
| definition      | 否    | [PolicyDefinition] object | **参数解释**： 策略定义结构，封装不同的策略格式和语言，用于定义访问控制规则。这是一个UNION类型，只能指定以下一种成员。 **约束限制**： 只能指定cedar成员。 **取值范围**： 不涉及。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                                           |
| validation_mode | 否    | String                                                             | **参数解释**： 策略创建/更新的验证模式。 **约束限制**： 不涉及。 **取值范围**： - FAIL_ON_ANY_FINDINGS：如果Cedar分析器报告任何发现则失败（默认）。   - IGNORE_ALL_FINDINGS：即使检测到发现也允许创建/更新。    **默认取值**： FAIL_ON_ANY_FINDINGS |
   
 表3PolicyDefinition 
| 参数    | 是否必选 | 参数类型                                                     | 描述                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| cedar | 是    | [CedarPolicy] object | **参数解释**： Cedar策略定义，用于封装Cedar语法的访问控制策略语句。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。 |
   
 表4CedarPolicy 
| 参数        | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| statement | 是    | String | **参数解释**： Cedar策略语句，定义授权逻辑。该语句遵循Cedar语法，指定主体、操作、资源和条件，用于细粒度访问控制。 **约束限制**： 不涉及。 **取值范围**： 长度为34\~10000个字符。 |
   
#### 响应参数
**状态码：202**
表5响应Body参数 
| 参数     | 参数类型                                            | 描述                                                                                                                             |
|:---|:---|:---|
| policy | [Policy] object | **参数解释**： 策略对象。 **取值范围**： 不涉及。 |
   
 表6Policy 
| 参数                 | 参数类型                                                                | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| policy_id          | String                                                              | **参数解释**： 策略ID，系统自动生成的唯一标识符。 **取值范围**： 只能由英文字母、数字及"-"、"_"组成，长度为1\~128个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| name               | String                                                              | **参数解释**： 策略名称，用于标识和区分不同的策略。 **取值范围**： 只能以英文字母开头，由英文字母、数字及"_"组成，长度为1\~48个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| description        | String                                                              | **参数解释**： 策略的可读描述。 **取值范围**： 长度为1\~4096个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| urn                | String                                                              | **参数解释**： 策略的统一资源名称（URN）。 **取值范围**： 长度为1\~1024个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| pending_definition | [PolicyDefinition] object | **参数解释**： 策略定义结构，封装不同的策略格式和语言，用于定义访问控制规则。这是一个UNION类型，只能指定以下一种成员。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| active_definition  | [PolicyDefinition] object | **参数解释**： 策略定义结构，封装不同的策略格式和语言，用于定义访问控制规则。这是一个UNION类型，只能指定以下一种成员。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| status             | String                                                              | **参数解释**： 策略的当前状态。 **取值范围**： - CREATING：策略正在创建中   - ACTIVE：策略已激活并可用   - UPDATING：策略正在更新中   - DELETING：策略正在删除中   - CREATE_FAILED：策略创建失败   - UPDATE_FAILED：策略更新失败   - DELETE_FAILED：策略删除失败    |
| status_reasons     | Array of strings                                                    | **参数解释**： 关于策略状态的额外信息，提供关于任何失败或策略创建过程当前状态的详细信息。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| created_at         | String                                                              | **参数解释**： UTC时间戳，记录资源的创建或更新时间。 **取值范围**： 使用UTC+0时间格式，格式为yyyy-MM-ddTHH:mm:ssZ。例如：2025-01-01T00:00:00Z。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| updated_at         | String                                                              | **参数解释**： UTC时间戳，记录资源的创建或更新时间。 **取值范围**： 使用UTC+0时间格式，格式为yyyy-MM-ddTHH:mm:ssZ。例如：2025-01-01T00:00:00Z。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| policy_engine_id   | String                                                              | **参数解释**： 策略集ID，系统自动生成的唯一标识符。 **取值范围**： 只能由英文字母、数字及"-"、"_"组成，长度为12\~59个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   
 表7PolicyDefinition 
| 参数    | 参数类型                                                      | 描述                                                                                                                                                       |
|:---|:---|:---|
| cedar | [CedarPolicy] object | **参数解释**： Cedar策略定义，用于封装Cedar语法的访问控制策略语句。 **取值范围**： 不涉及。 |
   
 表8CedarPolicy 
| 参数        | 参数类型   | 描述                                                                                                                                                                                          |
|:---|:---|:---|
| statement | String | **参数解释**： Cedar策略语句，定义授权逻辑。该语句遵循Cedar语法，指定主体、操作、资源和条件，用于细粒度访问控制。 **取值范围**： 长度为34\~10000个字符。 |
   
**状态码：400**
表9响应Body参数 
| 参数                            | 参数类型   | 描述                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String | **参数解释**： 错误码。 **取值范围**： 不涉及。                         |
| error_msg                     | String | **参数解释**： 错误信息。 **取值范围**： 不涉及。                        |
| request_id                    | String | **参数解释**： 请求ID。 **取值范围**： 不涉及。                        |
| encoded_authorization_message | String | **参数解释**： 加密后的认证失败信息，可以通过STS5解密接口进行解密。 **取值范围**： 不涉及。 |
   
**状态码：404**
表10响应Body参数 
| 参数                            | 参数类型   | 描述                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String | **参数解释**： 错误码。 **取值范围**： 不涉及。                         |
| error_msg                     | String | **参数解释**： 错误信息。 **取值范围**： 不涉及。                        |
| request_id                    | String | **参数解释**： 请求ID。 **取值范围**： 不涉及。                        |
| encoded_authorization_message | String | **参数解释**： 加密后的认证失败信息，可以通过STS5解密接口进行解密。 **取值范围**： 不涉及。 |
   
#### 请求示例
更新策略的描述和定义。
```
PUT https://{endpoint}/v1/policy-engines/{policy_engine_id}/policies/{policy_id}
{
  "description" : "Updated description for the policy",
  "definition" : {
    "cedar" : {
      "statement" : "permit(principal, action, resource);"
    }
  }
}
```
#### 响应示例
**状态码：202**
```
{
  "policy" : {
    "policy_id" : "285624f5-5958-4f36-b171-168303615bce",
    "name" : "my_policy",
    "description" : "Updated description for the policy",
    "urn" : "agentIdentity:<region>:<account-id>:policy:policyEngine/<policy-engine-id>/<policy-id>",
    "pending_definition" : {
      "cedar" : {
        "statement" : "permit(principal, action, resource when principal == User::\"alice\");"
      }
    },
    "active_definition" : {
      "cedar" : {
        "statement" : "permit(principal, action, resource);"
      }
    },
    "status" : "UPDATING",
    "created_at" : "2025-01-01 00:00:00",
    "updated_at" : "2025-01-02 00:00:00",
    "policy_engine_id" : "285624f5-5958-4f36-b171-168303615bce"
  }
}
```
#### 状态码
| 状态码 | 描述        |
|:---|:---|
| 202 | 请求成功。     |
| 400 | 请求体异常。    |
| 404 | 未找到相应的资源。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-agentidentity/ErrorCode.html)。
