

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建策略引擎
<a name="policy-create-engine"></a>

策略引擎是一组策略的集合，用于评估和授权智能体工具的调用。在与网关关联时，策略引擎会拦截所有智能体请求，并根据定义的策略决定是允许还是拒绝各个操作。

**Topics**
+ [先决条件](#policy-engine-prerequisites)
+ [创建策略引擎](#create-policy-engine-methods)
+ [之后你需要的标识符](#policy-engine-arn-usage)

## 先决条件
<a name="policy-engine-prerequisites"></a>

在创建策略引擎之前，请先设置网关。有关更多信息，请参阅[设置 Amazon Bedrock AgentCore 网关](gateway-building.md)。

## 创建策略引擎
<a name="create-policy-engine-methods"></a>

下面显示了如何创建策略引擎。

策略引擎名称必须匹配`[A-Za-z][A-Za-z0-9_]*`且最多 48 个字符。它以字母开头，之后只允许使用字母、数字和下划线。连字符无效，因此请使用`my_policy_engine`而不是。`my-policy-engine`同样的规则适用于策略名称。

**Example**  

1. 在 AgentCore 项目中，将策略引擎添加到项目配置中：

   ```
   agentcore add policy-engine \
     --name my_policy_engine \
     --description "My Policy Engine" \
     --attach-to-gateways my-gateway \
     --attach-mode LOG_ONLY
   ```

1. 部署项目以在您的账户中创建它：

   ```
   agentcore deploy --yes
   ```

    `agentcore add`只记录引擎`agentcore/agentcore.json`；才`agentcore deploy`是创造它的原因。部署输出包括引擎 ID 和 ARN。 `--attach-to-gateways`然后在同一步骤中将引擎`--attach-mode`连接到网关 — 首先`LOG_ONLY`，没有策略的引擎不会拒绝实时流量。要使用您自己的 KMS 密钥加密引擎，请添加`--encryption-key-arn`；请参阅[自定义策略引擎的加密](policy-encryption.md)。

1. 在终端中运行以下代码，使用 Amazon CLI 创建策略引擎：

   ```
   aws bedrock-agentcore-control create-policy-engine \
     --name my_policy_engine \
     --description "My Policy Engine"
   ```

   响应中同时包含`policyEngineId`和`policyEngineArn`。两者兼而有之 — 它们在不同的地方使用，如中所述[之后你需要的标识符](#policy-engine-arn-usage)。

1. 以下 Python 代码展示了如何使用 P Amazon ython SDK (Boto3) 创建策略引擎：

   ```
   import boto3
   
   client = boto3.client('bedrock-agentcore-control')
   
   response = client.create_policy_engine(
       name='my_policy_engine',
       description='My Policy Engine'
   )
   
   print(f"Policy Engine ID: {response['policyEngineId']}")
   print(f"Policy Engine ARN: {response['policyEngineArn']}")
   ```

## 之后你需要的标识符
<a name="policy-engine-arn-usage"></a>

创建引擎会返回两个标识符，它们不可互换：

 `policyEngineId`   
由每个策略操作 — `CreatePolicy`、、`ListPolicies``UpdatePolicy`、`DeletePolicy` — 以及在 AgentCore CLI `--engine` 中使用。它看起来像`my_policy_engine-a1b2c3d4e5`：你的名字，加上生成的十个字符的后缀。在需要提供 ID 的地方传递 ARN 会被当作验证错误而被拒绝。

 `policyEngineArn`   
用于将引擎连接到网关，例如`policyEngineConfiguration.arn`在`CreateGateway`或`UpdateGateway`旁边`ENFORCE`。`mode` `LOG_ONLY`当你通过`--attach-to-gateways`时， AgentCore CLI 会为你解决这个问题。

有关创建策略的更多信息，请参阅[创建策略](policy-create-policies.md)。有关连接引擎和切换模式的信息，请参阅[策略实施模式](policy-enforcement-modes.md)。