クラウド・オブジェクト・ストレージのURIフォーマット
この記事では、DBMS_CLOUD
で操作するソース・ファイルURIの形式について説明します。この形式は、使用しているオブジェクト・ストレージ・サービスによって異なります。DBMS_CLOUD
では、セキュアな通信が保証され、URIを指定する場合はHTTPSを使用する必要があります(URIの接頭辞はhttps://
です)。
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
はバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。
URIは、オブジェクト・ストアの右側の省略記号メニューにあるOracle Cloud Infrastructure Object Storageの「オブジェクトの詳細」にあります:
- 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
はバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。
ノート:
ソース・ファイルは、オブジェクト・ストレージ層バケットに格納されている必要があります。Autonomous Databaseは、アーカイブ・ストレージ層のバケットをサポートしていません。詳細は、オブジェクト・ストレージの概要を参照してください。
事前認証済リクエストの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形式を使用することをお薦めします。詳細は、オブジェクト・ストレージ専用エンドポイントを参照してください。
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
はバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。
事前認証済URLは、資格証明を作成しなくても、Oracle Cloud Infrastructureオブジェクト・ストア内のファイルにアクセスするためのURLを取得する任意のDBMS_CLOUD
プロシージャで使用できます。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オブジェクト・ストア内のファイルにアクセスするためのURLを取得する任意のDBMS_CLOUD
プロシージャで使用できます。DBMS_CLOUD
プロシージャで署名付きURLを使用するには、credential_name
パラメータをNULL
として指定するか、credential_name
パラメータを指定しないでください。
詳細については、Share an Object with Othersを参照してください。
ノート:
DBMS_CLOUD
では、バケットにアクセスするための標準のAmazon S3エンドポイント構文がサポートされています。DBMS_CLOUD
では、Amazon S3のレガシー・エンドポイントはサポートされていません。詳細は、レガシー・エンドポイントを参照してください。
Azure Blob Storage URI形式
ソース・ファイルがAzure Blob Storageにある場合、ファイルにアクセスするためのURI形式の説明について次を参照してください: Resource URI Syntax。
たとえば、次の例では、ストレージ・アカウントatpc_user
のatpc
コンテナ内にあるファイルchannels.txt
を参照します。
https://atpc_user.blob.core.windows.net/atpc/channels.txt
ノート:
Shared Access Signatures (SAS) URLは、資格証明を作成することなくAzure Blob Storage内のファイルにアクセスするためのURLを取得する任意のDBMS_CLOUD
プロシージャで使用できます。共有アクセス署名(SAS) URLを使用するには、credential_name
パラメータをNULL
として指定するか、credential_name
パラメータを指定しないでください。
詳細は、共有アクセス署名(SAS)を使用したAzure Storageリソースへの制限されたアクセス権の付与を参照してください。
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互換オブジェクト・ストアでDBMS_CLOUD
を使用するには、有効な資格証明を指定する必要があります。詳細は、CREATE_CREDENTIALプロシージャを参照してください。
ソース・ファイルが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の互換性およびObject Storage Service APIを参照してください。
-
-
Google Cloud Storage S3互換URL
オブジェクトURLフォーマット:
https://bucketname.storage.googleapis.com/object_name
バケットURL形式:
https://bucketname.storage.googleapis.com/
詳細については、Migrating from Amazon S3 to Cloud StorageおよびRequest Endpointsを参照してください。
-
Wasabi S3互換URL
オブジェクトURLフォーマット:
https://bucketname.s3.region.wasabisys.com/object_name
バケットURL形式:
https://bucketname.s3.region.wasabisys.com/
詳細は、Wasabi S3 APIリファレンスおよびWasabiのストレージ・リージョンのサービスURLを参照してください。
顧客管理の追加URI形式
DBMS_CLOUD
は、完全修飾ドメイン名(FQDNs
)を持つ事前構成済で認識されたURIs
に加えて、顧客管理エンドポイントURIs
の適切な認証スキームを決定できません。このような場合、DBMS_CLOUD
は、適切なURI
スキームに依存して、顧客管理エンドポイントの認証スキームを識別します。
URIスキーム | 認証タイプ | アクセス・メソッドの説明 | URIの例 |
---|---|---|---|
基本:// | Basic認証 | データベース資格証明オブジェクトに格納されているユーザー名とパスワードは、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互換 | データベース資格証明オブジェクトのユーザー名/パスワード・フィールドから取得されたアクセス・キーと秘密キー、およびHTTPリクエストに対して実行されたS3互換認証。 | s3://bucket.myprivatesite.com/file1.csv |
例:
S3互換認証を使用する顧客管理エンドポイント。
この例では、新しいURIs
について、顧客はDBMS_NETWORK_ACL_ADMIN
パッケージを使用してパブリックまたはプライベートのホスト名パターンを追加する方法を示します。ユーザーADMIN
によって実行されるコード・ブロックは、ドメイン*.myprivatesite.com
のエンドポイントへのユーザーSCOTT
の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
ユーザーは、SCOTT
ユーザーへのアクセスを提供するホストのネットワークACLを作成します。
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;
/