云对象存储 URI 格式
本文介绍了使用 DBMS_CLOUD
的操作中源文件 URI 的格式。格式取决于您使用的对象存储服务。DBMS_CLOUD
保证安全通信以及您指定的任何 URI 必须使用 HTTPS,并将 https://
作为 URI 的前缀。
Oracle Cloud Infrastructure Object Storage 原生 URI 格式
注意:
Autonomous Database 仅支持标准层存储桶。它不支持归档层存储桶。如果源文件位于商业领域 (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
是存储桶名称。有关更多信息,请参见 Understanding Object Storage Namespaces 。
您可以在对象存储的右侧省略号菜单中的 Oracle Cloud Infrastructure Object Storage "Object Details" 中找到 URI:
- 单击 Oracle Cloud 旁边的
打开 Oracle Cloud Infrastructure 控制台。
- 从 Oracle Cloud Infrastructure 左侧导航菜单中,单击核心基础结构。在对象存储下,单击对象存储。
- 在“列表范围”下,选择一个区间。
- 从名称列中,选择一个存储桶。
- 在“对象”区域中,单击查看对象详细信息。
- 在对象详细信息页上, 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
是存储桶名称。有关更多信息,请参见 Understanding Object Storage Namespaces 。
注意:
源文件需要存储在对象存储层存储桶中。Autonomous Database 不支持归档存储层中的存储桶。有关更多信息,请参见 Overview of Object Storage (对象存储概述)。
使用预先验证的请求 URL 的 Oracle Cloud Infrastructure Object Storage URI 格式
如果源文件位于 Oracle Cloud Infrastructure Object Storage 上,您可以使用 Oracle Cloud Infrastructure 预先验证的 URI。创建预先验证的请求时,将生成唯一的 URL。然后,您可以向组织中的用户、合作伙伴或第三方提供唯一 URL,以访问预先验证身份的请求中标识的对象存储资源目标。
注意:
仔细评估预先验证的访问的业务要求和安全影响。创建预先验证的请求 URL 时,请注意 Expiration(到期)和 Access Type(访问类型),以确保它们适合您的使用。通过预先验证的请求 URL,只要请求处于活动状态,任何对请求中标识的目标具有 URL 访问权限的人都可以访问该 URL。除了考虑预先验证的访问的操作需求外,管理其分发也同样重要。
如果源文件位于商业领域 (OC1) 中的 Oracle Cloud Infrastructure Object Storage 上,建议使用以下 URI 格式,该格式使用对象存储专用端点。有关详细信息,请参阅对象存储专用端点。
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
是存储桶名称。有关更多信息,请参见 Understanding Object Storage Namespaces 。
您可以在任何 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
。
有关更多信息,请参见 Using Pre-Authenticated Requests 。
Amazon S3 URI 格式
如果源文件位于 Amazon S3 中,请参见以下内容以了解用于访问文件的 URI 格式的说明:访问存储桶。
例如,以下内容引用 us-west-2
区域中的 atpc
存储桶中的文件 channels.txt
。
https://s3-us-west-2.amazonaws.com/atpc/channels.txt
您可以在任何 DBMS_CLOUD
过程中使用预设的 URL,该 URL 使用 URL 访问 Amazon S3 对象存储中的文件,而无需创建凭证。要在任何 DBMS_CLOUD
过程中使用指定的 URL,请将 credential_name
参数指定为 NULL
,或者不提供 credential_name
参数。
有关更多信息,请参见 Share an Object with Others 。
注意:
DBMS_CLOUD
支持标准的 Amazon S3 端点语法来访问存储桶。DBMS_CLOUD
不支持 Amazon S3 旧端点。有关更多信息,请参见 Legacy Endpoints 。
Azure Blob 存储 URI 格式
如果源文件位于 Azure Blob Storage 中,请参见以下内容以了解用于访问文件的 URI 格式的说明:资源 URI 语法。
例如,以下内容引用存储帐户 atpc_user
中的 atpc
容器中的文件 channels.txt
:
https://atpc_user.blob.core.windows.net/atpc/channels.txt
注意:
您可以在任何DBMS_CLOUD
过程中使用共享访问签名 (SAS) URL,该过程使用 URL 访问 Azure Blob Storage 中的文件,而无需创建凭证。要使用共享访问签名 (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 Hot Cloud Storage
如果源文件位于支持 Amazon S3 兼容 URI 的服务上,请使用以下 URI 格式来访问文件:
-
Oracle Cloud Infrastructure Object Storage S3 兼容 URL
如果源文件位于商业领域 (OC1) 中的 Oracle Cloud Infrastructure Object Storage 上,建议您对商业领域 (OC1) 使用下面列出的对象 URL 和存储桶 URL 格式。有关详细信息,请参阅对象存储专用端点。
注意:
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 和 Wasabi's Storage Regions 的服务 URL 。
其他客户管理的 URI 格式
URIs
及其全限定域名 (FQDNs
) 之外,DBMS_CLOUD
无法确定客户管理的端点 URIs
的正确验证方案。在这些情况下,DBMS_CLOUD
依赖适当的 URI
方案来标识客户管理的端点的验证方案。
URI 方案 | 验证类型 | 访问方法说明 | URI 示例 |
---|---|---|---|
基本:// | 基本验证 | 存储在数据库身份证明对象中的用户名和密码用于验证 HTTP 请求 | basic://api.github.com/users/myaccount |
bearer:// | Bearer 标记验证 | 存储在数据库身份证明对象的密码字段中的 Bearer 标记用于指定 HTTP 请求的授权标头 | bearer://api.sendgrid.com/v3/resource |
oci:// | OCI 原生 | 从存储并用于使用 OCI 验证协议对请求进行签名的数据库身份证明对象获取的 OCI 签名密钥 | oci://objectstorage.us-ashburn-1.oraclecloud.com |
公共:// | 不验证 | 公共 URL | public://cms.data.gov/ |
s3:// | Amazon Web Services S3 兼容 | 从数据库身份证明对象的 username/password 字段获取的访问密钥和密钥,以及为 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;
/