云对象存储 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:

  1. 单击 Oracle Cloud 旁边的 导航图标 打开 Oracle Cloud Infrastructure 控制台。
  2. Oracle Cloud Infrastructure 左侧导航菜单中,单击核心基础结构。在对象存储下,单击对象存储
  3. 在“列表范围”下,选择一个区间
  4. 名称列中,选择一个存储桶。
  5. 在“对象”区域中,单击查看对象详细信息
  6. 对象详细信息页上, 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

注意:

要将 DBMS_CLOUDAmazon S3 兼容的对象存储一起使用,您需要提供有效的凭证。有关更多信息,请参见CREATE_CREDENTIAL Procedure

如果源文件位于支持 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 ReferenceWasabi'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;
/