RDS for Oracle 的 Amazon Bedrock 集成
RDS for Oracle 支持与 Amazon Bedrock 集成,使您能够使用 SQL 直接从 Oracle 数据库调用基础模型。通过这种集成,您可以使用生成式人工智能功能,例如文本生成、摘要和嵌入生成,而无需将数据移出数据库。
注意
仅 Oracle Database 26ai 支持 Amazon Bedrock 集成。
Bedrock 集成的要求
要使用 Amazon Bedrock 与 RDS for Oracle 的集成,请确保满足以下要求。
数据库要求
-
您的数据库实例必须运行 Oracle Database 26ai(26.0.0.0)或更高版本。
-
调用 Bedrock 模型的数据库用户必须对
DBMS_CLOUD和DBMS_CLOUD_AI软件包拥有EXECUTE权限。 -
数据库必须配置了访问控制条目(ACE),以支持对 Bedrock 运行时端点进行出站 HTTPS 访问。有关更多信息,请参阅 配置 Bedrock 集成。
AWS 凭证要求
-
您必须拥有有权调用所需 Amazon Bedrock 基础模型(
bedrock:InvokeModel以及可选bedrock:InvokeModelWithResponseStream操作)的 IAM 用户或角色。 -
您必须已通过 Amazon Bedrock 控制台请求并获得了对所需基础模型的访问权限。有关更多信息,请参阅《Amazon Bedrock 用户指南》中的访问 Amazon Bedrock 基础模型。
-
您必须拥有 AWS 访问密钥(访问密钥 ID 和秘密访问密钥),IAM 身份才能使用
DBMS_CLOUD.CREATE_CREDENTIAL将其存储在数据库中。
Amazon VPC 网络要求
RDS for Oracle 数据库实例必须能够通过端口 443(HTTPS)到达 Amazon Bedrock 运行时端点 (bedrock-runtime.)。您可以通过下列方式之一来实现此目的。region.amazonaws.com
选项 1:Amazon VPC 接口端点(AWS PrivateLink):建议采用
为 Amazon Bedrock 运行时服务创建 Amazon VPC 接口端点。这样可以保持 AWS 网络内所有流量的私密性,并且不需要访问互联网。
-
使用服务名称
com.amazonaws.创建 Amazon VPC 接口端点。region.bedrock-runtime -
将端点放置在与您的 Amazon RDS 数据库实例相同的 Amazon VPC 和子网中(或与数据库实例子网相连的子网中)。
-
将安全组附加到端点,以支持来自数据库实例安全组的入站 HTTPS(端口 443)。
-
为端点启用私有 DNS,以便标准主机名
bedrock-runtime.解析为私有端点 IP 地址。region.amazonaws.com -
确保数据库实例的安全组支持出站 HTTPS(端口 443)到达端点的安全组(或到达端点的私有 IP 地址)。
选项 2:NAT 网关(互联网路由)
如果您不使用 Amazon VPC 端点,则数据库实例的子网必须具有通过 NAT 网关到互联网的路由。
-
确保数据库实例所处的私有子网具有到 NAT 网关的路由。
-
NAT 网关所处的公有子网必须具有到互联网网关的路由。
-
数据库实例的安全组必须支持出站 HTTPS(端口 443)到达
bedrock-runtime.。region.amazonaws.com -
数据库实例的子网上的任何 Amazon VPC 网络 ACL 都必须支持出站 TCP 443 和相应的临时入站返回流量(TCP 端口 1024–65535)。
下表汇总了网络路径。
| 方法 | 需要访问互联网 | 流量路径 |
|---|---|---|
|
Amazon VPC 端点(AWS PrivateLink) |
否 |
数据库实例 → Amazon VPC 端点 → Bedrock 服务 |
|
NAT 网关 |
是(仅限出站) |
数据库实例 → NAT 网关 → 互联网网关 → Bedrock 服务 |
配置 Bedrock 集成
要为您的 RDS for Oracle 数据库实例配置 Amazon Bedrock 集成,请完成以下步骤。
步骤 1:配置 Amazon VPC 网络连接
使用 Amazon VPC 网络要求中描述的网络选项之一,确保您的数据库实例可以到达 Bedrock 运行时端点。要在配置后验证连接,可以在稍后的步骤中从数据库进行测试。
步骤 2:获取具有 Bedrock 权限的 AWS 凭证
使用以下策略创建 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:授予数据库权限
以 DBA 身份进行连接,并向应用程序用户授予必要的权限。
-- Grant EXECUTE on DBMS_CLOUD and DBMS_CLOUD_AI GRANT EXECUTE ON DBMS_CLOUD TOdb_user; GRANT EXECUTE ON DBMS_CLOUD_AI TOdb_user;
步骤 4:授予对 Bedrock 端点的网络 ACL 访问权限
向数据库用户授予对 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:在数据库中创建凭证
以应用程序用户身份进行连接,并使用 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 创建人工智能配置文件
使用 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。
-
跨区域推理配置文件:支持跨区域推理的区域和模型。
-
预调配吞吐量:指定预调配吞吐量的 ARN。
-
自定义模型:购买预调配吞吐量,然后指定生成的预调配模型的 ARN。
验证 Bedrock 集成
使用简单的提示测试连接性。
EXEC DBMS_CLOUD_AI.SET_PROFILE('BEDROCK_PROFILE'); SELECT AI chat what is Amazon RDS;
如果响应成功返回,则说明您的 Bedrock 集成配置正确。
使用 Bedrock 集成
配置集成后,您可以使用 SQL 和 Select AI 从 Oracle 数据库中调用 Amazon Bedrock 基础模型。
有关 Amazon Bedrock 的完整用法示例,包括 SELECT
AI 操作(runsql、showsql、narrate、chat 和 explainsql)、DBMS_CLOUD_AI.GENERATE 函数、多回合对话和检索增强生成(RAG),请参阅以下 Oracle 文档: