云对象存储 URI 格式
本文介绍了使用 DBMS_CLOUD 的操作中源文件 URI 的格式。格式取决于您使用的对象存储服务。DBMS_CLOUD 保证安全通信,您指定的任何 URI 必须使用 HTTPS,https:// 作为 URI 的前缀。
Oracle Cloud Infrastructure Object Storage Native URI 格式
注:自治 AI 数据库仅支持标准层存储桶。它不支持归档层存储桶。
如果源文件位于商业领域 (OC1) 中的 Oracle Cloud Infrastructure Object Storage 上,则建议您使用以下 URI 格式,该格式使用对象存储专用端点。有关详细信息,请参阅对象存储专用端点。
https://namespace-string.objectstorage.region.oci.customer-oci.com/n/namespace-string/b/bucketname/o/filename
注: OCI 对象存储专用端点 URL 仅在商业领域 (OC1) 中受支持,在 19.24 及更高版本中可用。
如果源文件位于 Oracle Cloud Infrastructure Object Storage 上,并且不在商业领域 (OC1) 中,则必须使用以下格式:
https://objectstorage.region.oraclecloud.com/n/namespace-string/b/bucket/o/filename
例如,在商业领域 (OC1) 中,Phoenix 数据中心 *bucketname* 存储桶中文件 channels.txt 的本机 URI 为:
https://namespace.objectstorage.region.oci.customer-oci.com/n/namespace/b/bucketname/o/channels.txt
在此示例中,namespace-string 是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname 是存储桶名称。有关详细信息,请参阅了解对象存储名称空间。
您可以从对象存储的右侧省略号菜单中的 Oracle Cloud Infrastructure Object Storage“Object Details(对象详细信息)”中找到 URI:
-
通过单击 Oracle Cloud 旁边的
打开 Oracle Cloud Infrastructure 控制台。 -
从 Oracle Cloud Infrastructure 左侧导航菜单中,单击 Storage 。在对象存储和归档存储下,单击存储桶。
-
在“列表范围”下,选择一个区间。
-
单击名称列下的存储桶名称。
-
在对象选项卡上,打开操作,然后单击感兴趣对象的查看对象详细信息。
-
在对象详细信息页上, URL 路径 (URI) 字段显示用于访问对象的 URI。
Oracle Cloud Infrastructure Object Storage Swift URI 格式
如果源文件位于商业领域 (OC1) 中的 Oracle Cloud Infrastructure Object Storage 上,则建议您使用以下 URI 格式,该格式使用对象存储专用端点。有关详细信息,请参阅对象存储专用端点。
https://namespace-string.swiftobjectstorage.region.oci.customer-oci.com/v1/namespace-string/bucket/filename
注: OCI 对象存储专用端点 URL 仅在商业领域 (OC1) 中受支持,在 19.24 及更高版本中可用。
如果源文件位于 Oracle Cloud Infrastructure Object Storage 上,并且不在商业领域 (OC1) 中,则必须使用以下格式:
https://swiftobjectstorage.region.oraclecloud.com/v1/namespace-string/bucket/filename
例如,在商业领域 (OC1) 中,Phoenix 数据中心 *bucketname* 存储桶中文件 channels.txt 的 Swift URI 为:
https://namespace-string.swiftobjectstorage.us-phoenix-1.oci.customer-oci.com/v1/namespace-string/bucketname/channels.txt
在此示例中,namespace-string 是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname 是存储桶名称。有关详细信息,请参阅了解对象存储名称空间。
注:源文件需要存储在对象存储层存储桶中。自治 AI 数据库不支持归档存储层中的存储桶。有关更多信息,请参见对象存储概述。
使用预先验证的请求 URL 的 Oracle Cloud Infrastructure Object Storage URI 格式
如果源文件位于 Oracle Cloud Infrastructure Object Storage 上,则可以使用 Oracle Cloud Infrastructure 预先验证的 URI。创建预先验证身份的请求时,将生成唯一的 URL。然后,您可以向组织、合作伙伴或第三方中的用户提供唯一的 URL,以访问预先验证身份的请求中标识的对象存储资源目标。
注:仔细评估预验证访问权限的业务需求和安全性影响。创建预先验证的请求 URL 时,请注意到期和访问类型,以确保它们适合您使用。
预先验证的请求 URL 允许对请求中标识的目标具有 URL 访问权限的任何人,只要该请求处于活动状态即可。除了考虑预先验证的访问的运营需求外,管理其分发也同样重要。
如果源文件位于商业领域 (OC1) 中的 Oracle Cloud Infrastructure Object Storage 上,则建议您使用以下 URI 格式,该格式使用对象存储专用端点。有关详细信息,请参见 Object Storage Dedicated Endpoints 。
https://namespace-string.objectstorage.region.oci.customer-oci.com/p/encrypted_string/n/namespace-string/b/bucket/o/filename
注: OCI 对象存储专用端点 URL 仅在商业领域 (OC1) 中受支持,在 19.24 及更高版本中可用。
如果源文件位于 Oracle Cloud Infrastructure Object Storage 上,并且不在商业领域 (OC1) 中,则必须使用以下格式:
https://objectstorage.region.oraclecloud.com.com/p/encrypted_string/n/namespace-string/b/bucket/o/filename
例如,在商业领域 (OC1) 中,Phoenix 数据中心 bucketname 存储桶中 channels.txt 文件的样例预验证 URI 为:
https://namespace-string.objectstorage.us-phoenix-1.oci.customer-oci.com/p/2xN-uDtWJNsiD910UCYGue/n/namespace-string/b/bucketname/o/channels.txt
在此示例中,namespace-string 是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname 是存储桶名称。有关详细信息,请参阅了解对象存储名称空间。
您可以在任何 DBMS_CLOUD 过程中使用预先验证的 URL,该过程接受 URL 以访问 Oracle Cloud Infrastructure 对象存储中的文件,而无需创建身份证明。您需要将 credential_name 参数指定为 NULL,或者不提供 credential_name 参数。
例如:
BEGIN
DBMS_CLOUD.COPY_DATA(
table_name =>'CHANNELS',
file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/p/unique-pre-authenticated-string/n/namespace-string/b/bucketname/o/channels.txt',
format => json_object('delimiter' value ',') );
END;
/
注:混合 URL 的列表有效。如果 URL 列表同时包含需要验证的预先验证的 URL 和 URL,则 DBMS_CLOUD 使用指定的 credential_name 访问需要验证的 URL,而对于预先验证的 URL,将忽略指定的 credential_name。
有关详细信息,请参阅使用预先验证的请求。
Amazon S3 URI 格式
如果源文件位于 Amazon S3 中,请参见以下内容以了解用于访问文件的 URI 格式的说明:访问存储桶。
例如,以下内容引用了 us-west-2 区域中 atpc 存储桶中的文件 channels.txt。
https://s3-us-west-2.amazonaws.com/atpc/channels.txt
您可以在任何接受 URL 以访问 Amazon S3 对象存储中的文件的 DBMS_CLOUD 过程中使用预签名 URL,而无需创建身份证明。要在任意 DBMS_CLOUD 过程中使用预签名 URL,请将 credential_name 参数指定为 NULL,或者不提供 credential_name 参数。
有关详细信息,请参阅与其他人共享对象。
注:DBMS_CLOUD 支持标准 Amazon S3 端点语法来访问存储桶。DBMS_CLOUD 不支持 Amazon S3 传统端点。有关更多信息,请参见 Legacy Endpoints 。
Azure Blob 存储 URI 格式
如果源文件位于 Azure Blob 存储中,请参阅以下内容以了解用于访问文件的 URI 格式的说明:资源 URI 语法。
例如,以下内容引用了存储帐户 atpc_user 中 atpc 容器中的文件 channels.txt:
https://atpc_user.blob.core.windows.net/atpc/channels.txt
注:您可以在任何接受 URL 以访问 Azure Blob Storage 中的文件的 DBMS_CLOUD 过程中使用共享访问签名 (SAS) URL,而无需创建身份证明。要使用共享访问签名 (SAS) URL,请将 credential_name 参数指定为 NULL,或者不提供 credential_name 参数。
有关更多信息,请参见 Grant Limited Access to Azure Storage Resources Using Shared Access Signatures (SAS) 。
Amazon S3 兼容 URI 格式
DBMS_CLOUD 支持支持 Amazon S3 兼容 URL 的对象存储服务实施,包括以下服务:
- 带有 Amazon S3 兼容 URL 的 Oracle Cloud Infrastructure Object Storage
- 具有 Amazon S3 兼容 URL 的 Google Cloud Storage
- 具有 Amazon S3 兼容 URL 的 Wasabi 热云存储
注:要将 DBMS_CLOUD 与 Amazon S3 兼容的对象存储一起使用,您需要提供有效的身份证明。有关更多信息,请参见 CREATE_CREDENTIAL Procedure 。
如果源文件位于支持 Amazon S3 兼容 URI 的服务上,请使用以下 URI 格式访问文件:
-
Oracle Cloud Infrastructure Object Storage S3 兼容 URL
如果源文件位于商业领域 (OC1) 中的 Oracle Cloud Infrastructure Object Storage 上,则建议将下面列出的对象 URL 和存储桶 URL 格式用于商业领域 (OC1)。有关详细信息,请参阅对象存储专用端点。
注: OCI 对象存储专用端点 URL 仅在商业领域 (OC1) 中受支持,在 19.24 及更高版本中可用。
对象 URL 格式
-
仅在商业领域 (OC1) 中支持:
https://mynamespace.compat.objectstorage.region.oci.customer-oci.com/bucket_name/object_name -
在所有区域中受支持:
https://mynamespace.compat.objectstorage.region.oraclecloud.com/bucket_name/object_name
存储桶 URL 格式:
-
仅在商业领域 (OC1) 中支持:
https://mynamespace.compat.objectstorage.region.oci.customer-oci.com/bucket_name -
在所有区域中受支持:
https://mynamespace.compat.objectstorage.region.oraclecloud.com/bucket_name
有关详细信息,请参阅 Amazon S3 兼容性和对象存储服务 API 。
-
-
Google Cloud Storage S3 兼容 URL
对象 URL 格式:
https://bucketname.storage.googleapis.com/object_name存储桶 URL 格式:
https://bucketname.storage.googleapis.com/有关详细信息,请参阅从 Amazon S3 迁移到云存储和请求端点。
-
Wasabi S3 兼容 URL
对象 URL 格式:
https://bucketname.s3.region.wasabisys.com/object_name存储桶 URL 格式:
https://bucketname.s3.region.wasabisys.com/有关详细信息,请参阅 Wasabi S3 API Reference 和 Service URLs for Wasabi’s Storage Regions 。
其他客户管理的 URI 格式
除了预先配置的、可识别的 URIs 以及其全限定域名 (FQDNs),DBMS_CLOUD 还无法确定客户管理的端点 URIs 的正确验证方案。在这些情况下,DBMS_CLOUD 依赖于正确的 URI 方案来标识客户管理的端点的验证方案。
| URI 方案 | 验证类型 | 访问方法说明 | URI 示例 |
|---|---|---|---|
| 基本:// | 基本身份验证 | 存储在数据库身份证明对象中的用户名和密码用于验证 HTTP 请求 | basic://api.github.com/users/myaccount |
| 持有人:// | Bearer 标记验证 | 存储在数据库身份证明对象的密码字段中的 Bearer 标记用于指定 HTTP 请求的授权标头 | bearer://api.sendgrid.com/v3/resource |
| oci:// | OCI 本机 | 从存储的数据库身份证明对象获取的 OCI 签名密钥,用于使用 OCI 验证协议对请求进行签名 | oci://objectstorage.us-ashburn-1.oraclecloud.com |
| public:// | 不验证 | 公共网址 | public://cms.data.gov/ |
| s3:// | 与 Amazon Web Services S3 兼容 | 从数据库身份证明对象的用户名/密码字段中获取的访问密钥和密钥,以及对 HTTP 请求执行的与 S3 兼容的验证。 | s3://bucket.myprivatesite.com/file1.csv |
示例:
使用与 S3 兼容的验证进行客户管理的端点。
此示例说明对于新 URIs,客户如何使用 DBMS_NETWORK_ACL_ADMIN 软件包添加公共或专用主机名模式。由用户 ADMIN 执行的代码块允许用户 SCOTT 对域 *.myprivatesite.com 中的端点进行 HTTPS 访问。然后,它显示用户 SCOTT 如何访问新启用的端点。请注意,用户 SCOTT 的身份证明 MY_CRED 必须存储访问密钥和密钥,以便对 URI 前缀指示的 HTTP 请求执行与 S3 兼容的验证。
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => '*.myprivatesite.com',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'SCOTT',
principal_type => xs_acl.ptype_db),
private_target => TRUE );
END;
/
BEGIN
DBMS_CLOUD.get_object(
credential_name => 'MY_CRED',
object_uri => 's3://bucket.myprivatesite.com/file1.csv',
directory_name => 'MY_DIR' );
END;
/
具有公共访问权限的客户管理的端点
此示例说明如何注册 SCOTT 用户以访问公共 REST API。ADMIN 用户为主机创建网络 ACL 以提供对 SCOTT 用户的访问权限。
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'data.cms.gov',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'SCOTT',
principal_type => xs_acl.ptype_db)
);
END;
/
SELECT DBMS_CLOUD.get_response_text(
DBMS_CLOUD.send_request(
uri => 'public://data.cms.gov/provider-data/api/1/datastore/imports/a',
method => DBMS_CLOUD.METHOD_GET,
headers => JSON_OBJECT('Accept' VALUE 'application/json')
)
)
FROM DUAL;
/