

# RDS for Oracle 的 Amazon Bedrock 集成
<a name="Oracle.BedrockIntegration"></a>

RDS for Oracle 支持与 Amazon Bedrock 集成，使您能够使用 SQL 直接从 Oracle 数据库调用基础模型。通过这种集成，您可以使用生成式人工智能功能，例如文本生成、摘要和嵌入生成，而无需将数据移出数据库。

**注意**  
仅 Oracle Database 26ai 支持 Amazon Bedrock 集成。

**Topics**
+ [Bedrock 集成的要求](#Oracle.BedrockIntegration.requirements)
+ [配置 Bedrock 集成](#Oracle.BedrockIntegration.Configuring)
+ [使用 Bedrock 集成](#Oracle.BedrockIntegration.Using)

## Bedrock 集成的要求
<a name="Oracle.BedrockIntegration.requirements"></a>

要使用 Amazon Bedrock 与 RDS for Oracle 的集成，请确保满足以下要求。

### 数据库要求
<a name="Oracle.BedrockIntegration.requirements.Database"></a>
+ 您的数据库实例必须运行 Oracle Database 26ai（26.0.0.0）或更高版本。
+ 调用 Bedrock 模型的数据库用户必须对 `DBMS_CLOUD` 和 `DBMS_CLOUD_AI` 软件包拥有 `EXECUTE` 权限。
+ 数据库必须配置了访问控制条目（ACE），以支持对 Bedrock 运行时端点进行出站 HTTPS 访问。有关更多信息，请参阅 [配置 Bedrock 集成](#Oracle.BedrockIntegration.Configuring)。

### AWS 凭证要求
<a name="Oracle.BedrockIntegration.requirements.Credentials"></a>
+ 您必须拥有有权调用所需 Amazon Bedrock 基础模型（`bedrock:InvokeModel` 以及可选 `bedrock:InvokeModelWithResponseStream` 操作）的 IAM 用户或角色。
+ 您必须已通过 Amazon Bedrock 控制台请求并获得了对所需基础模型的访问权限。有关更多信息，请参阅《Amazon Bedrock 用户指南》**中的[访问 Amazon Bedrock 基础模型](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)。
+ 您必须拥有 AWS 访问密钥（访问密钥 ID 和秘密访问密钥），IAM 身份才能使用 `DBMS_CLOUD.CREATE_CREDENTIAL` 将其存储在数据库中。

### Amazon VPC 网络要求
<a name="Oracle.BedrockIntegration.requirements.Network"></a>

RDS for Oracle 数据库实例必须能够通过端口 443（HTTPS）到达 Amazon Bedrock 运行时端点 (`bedrock-runtime.{{region}}.amazonaws.com`)。您可以通过下列方式之一来实现此目的。

**选项 1：Amazon VPC 接口端点（AWS PrivateLink）：建议采用**  
为 Amazon Bedrock 运行时服务创建 Amazon VPC 接口端点。这样可以保持 AWS 网络内所有流量的私密性，并且不需要访问互联网。

1. 使用服务名称 `com.amazonaws.{{region}}.bedrock-runtime` 创建 Amazon VPC 接口端点。

1. 将端点放置在与您的 Amazon RDS 数据库实例相同的 Amazon VPC 和子网中（或与数据库实例子网相连的子网中）。

1. 将安全组附加到端点，以支持来自数据库实例安全组的入站 HTTPS（端口 443）。

1. 为端点启用私有 DNS，以便标准主机名 `bedrock-runtime.{{region}}.amazonaws.com` 解析为私有端点 IP 地址。

1. 确保数据库实例的安全组支持出站 HTTPS（端口 443）到达端点的安全组（或到达端点的私有 IP 地址）。

**选项 2：NAT 网关（互联网路由）**  
如果您不使用 Amazon VPC 端点，则数据库实例的子网必须具有通过 NAT 网关到互联网的路由。

1. 确保数据库实例所处的私有子网具有到 NAT 网关的路由。

1. NAT 网关所处的公有子网必须具有到互联网网关的路由。

1. 数据库实例的安全组必须支持出站 HTTPS（端口 443）到达 `bedrock-runtime.{{region}}.amazonaws.com`。

1. 数据库实例的子网上的任何 Amazon VPC 网络 ACL 都必须支持出站 TCP 443 和相应的临时入站返回流量（TCP 端口 1024–65535）。

下表汇总了网络路径。


**Bedrock 集成的网络路径**  

| 方法 | 需要访问互联网 | 流量路径 | 
| --- | --- | --- | 
| Amazon VPC 端点（AWS PrivateLink） | 否 | 数据库实例 → Amazon VPC 端点 → Bedrock 服务 | 
| NAT 网关 | 是（仅限出站） | 数据库实例 → NAT 网关 → 互联网网关 → Bedrock 服务 | 

## 配置 Bedrock 集成
<a name="Oracle.BedrockIntegration.Configuring"></a>

要为您的 RDS for Oracle 数据库实例配置 Amazon Bedrock 集成，请完成以下步骤。

### 步骤 1：配置 Amazon VPC 网络连接
<a name="Oracle.BedrockIntegration.Configuring.Step1"></a>

使用 [Amazon VPC 网络要求](#Oracle.BedrockIntegration.requirements.Network)中描述的网络选项之一，确保您的数据库实例可以到达 Bedrock 运行时端点。要在配置后验证连接，可以在稍后的步骤中从数据库进行测试。

### 步骤 2：获取具有 Bedrock 权限的 AWS 凭证
<a name="Oracle.BedrockIntegration.Configuring.Step2"></a>

使用以下策略创建 IAM 用户或角色（或将其附加到现有身份）。

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BedrockInvoke",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": [
        "arn:aws:bedrock:{{region}}::foundation-model/*"
      ]
    }
  ]
}
```

要限制对特定模型的访问，请将通配符替换为特定的模型 ARN，例如：

```
"arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-sonnet-4-5-20250929-v1:0"
```

从 IAM 控制台为此 IAM 用户生成访问密钥。下一步需要访问密钥 ID 和秘密访问密钥。

### 步骤 3：授予数据库权限
<a name="Oracle.BedrockIntegration.Configuring.Step3"></a>

以 DBA 身份进行连接，并向应用程序用户授予必要的权限。

```
-- Grant EXECUTE on DBMS_CLOUD and DBMS_CLOUD_AI
GRANT EXECUTE ON DBMS_CLOUD TO {{db_user}};
GRANT EXECUTE ON DBMS_CLOUD_AI TO {{db_user}};
```

### 步骤 4：授予对 Bedrock 端点的网络 ACL 访问权限
<a name="Oracle.BedrockIntegration.Configuring.Step4"></a>

向数据库用户授予对 Bedrock 运行时端点的网络 ACL 访问权限。

```
BEGIN
  DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
    host => 'bedrock-runtime.{{region}}.amazonaws.com',
    ace  => xs$ace_type(
              privilege_list => xs$name_list('http'),
              principal_name => '{{db_user}}',
              principal_type => xs_acl.ptype_db)
  );
END;
/
```

将 {{region}} 替换为您的 AWS 区域（例如 `us-east-1`），并将 {{db\_user}} 替换为将调用 Bedrock 模型的 Oracle 数据库用户。

### 步骤 5：在数据库中创建凭证
<a name="Oracle.BedrockIntegration.Configuring.Step5"></a>

以应用程序用户身份进行连接，并使用 `DBMS_CLOUD` 创建凭证对象。

```
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'AWS_BEDROCK_CRED',
    username        => '{{your_AWS_access_key_id}}',
    password        => '{{your_AWS_secret_access_key}}'
  );
END;
/
```

### 步骤 6：为 Bedrock 创建人工智能配置文件
<a name="Oracle.BedrockIntegration.Configuring.Step6"></a>

使用 `DBMS_CLOUD_AI` 创建人工智能配置文件，该配置文件引用您的凭证并将 AWS 指定为提供商。

```
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
    profile_name => 'BEDROCK_PROFILE',
    attributes   => '{"provider": "aws",
      "credential_name": "AWS_BEDROCK_CRED",
      "model": "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
      "object_list": [{"owner": "{{schema}}", "name": "{{table1}}"},
                      {"owner": "{{schema}}", "name": "{{table2}}"}]
    }'
  );
END;
/
```

要在 `us-east-1` 以外的区域使用 Amazon Bedrock 运行时端点，请在配置文件属性 JSON 中包含 `region` 和 `target_language` 属性。将 `region` 设置为您的 Amazon Bedrock 运行时端点所在的区域（例如 `us-west-2`）。

如果设置了 `region`，则还必须包含 `target_language` 或 `source_language`。即使对于不使用翻译的操作（例如 `chat` 或 `runsql`），也必须同时设置这两个属性。

`target_language` 值仅影响 `translate` 操作。如果仅包含 `target_language` 而不包含 `region`，则配置文件将继续使用 `bedrock-runtime.us-east-1.amazonaws.com`。

**注意**  
由于 Oracle `DBMS_CLOUD_AI` 软件包存在一个已知的限制，因此必须将 `target_language` 与 `region` 一起设置。

以下示例创建一个使用 `us-west-2` 区域的配置文件。

```
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
    profile_name => 'BEDROCK_PROFILE_USW2',
    attributes   => '{"provider": "aws",
      "credential_name": "AWS_BEDROCK_CRED",
      "region": "us-west-2",
      "target_language": "en",
      "model": "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
      "object_list": [{"owner": "{{schema}}", "name": "{{table1}}"},
                      {"owner": "{{schema}}", "name": "{{table2}}"}]
    }'
  );
END;
/
```

您必须显式指定 `model` 属性。没有为 AWS 提供商提供默认模型。有关模型 ID，请参阅以下参考资料：
+ 基础模型：[Amazon Bedrock 基础模型 ID](https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html)。
+ 跨区域推理配置文件：[支持跨区域推理的区域和模型](https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference-support.html)。
+ 预调配吞吐量：指定预调配吞吐量的 ARN。
+ 自定义模型：购买预调配吞吐量，然后指定生成的预调配模型的 ARN。

### 验证 Bedrock 集成
<a name="Oracle.BedrockIntegration.Configuring.Verifying"></a>

使用简单的提示测试连接性。

```
EXEC DBMS_CLOUD_AI.SET_PROFILE('BEDROCK_PROFILE');
SELECT AI chat what is Amazon RDS;
```

如果响应成功返回，则说明您的 Bedrock 集成配置正确。

## 使用 Bedrock 集成
<a name="Oracle.BedrockIntegration.Using"></a>

配置集成后，您可以使用 SQL 和 Select AI 从 Oracle 数据库中调用 Amazon Bedrock 基础模型。

有关 Amazon Bedrock 的完整用法示例，包括 `SELECT AI` 操作（`runsql`、`showsql`、`narrate`、`chat` 和 `explainsql`）、`DBMS_CLOUD_AI.GENERATE` 函数、多回合对话和检索增强生成（RAG），请参阅以下 Oracle 文档：
+ [Example: Select AI with AWS](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/select-ai-examples.html#GUID-A2B7D8BB-5CBF-49D4-B12C-8AB54BA7D0A2)
+ [Manage AI Profiles – Use AWS](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/select-ai-manage-profiles.html#GUID-B71D2617-F079-4982-A979-6C1C8C58B577)
+ [DBMS\_CLOUD\_AI 软件包参考](https://docs.oracle.com/en/database/oracle/oracle-database/26/arpls/dbms_cloud_ai1.html)