機械翻訳について

REST APIを使用したコンテナ固有のポリシーの設定

Oracle Cloud at CustomerではなくこのトピックはOracle Cloud at Customerには適用されません。

アカウント・レベルのポリシー以外のコンテナごとに異なるレプリケーション・ポリシーを指定できます。 コンテナ・レベルのポリシーは、アカウント・レベルのポリシーよりも優先されます。 これにより、地理的に離れたデータセンター(DC)に複製されるデータを、より詳細なレベルで制御できます。

このタスクは、サービス管理者ロールを持つすべてのユーザーが実行できます。

注意:

  • archiveコンテナのレプリケーション・ポリシーは設定できません。
  • コンテナを作成するとき、またはコンテナが空のときに、コンテナ・レベルのレプリケーション・ポリシーを設定できます。

REST APIを使用して同じリージョン内のデータセンターにコンテナ固有のポリシーを設定する

コンテナのソースDCとGeoreplication DCをサービス・インスタンスのサブセットに設定することができます。 たとえば、サービス・インスタンスのプライマリDCがus2でgeoreplication DCがus6uscom-central-1の場合、コンテナのプライマリDCはus6us2、またはuscom-central-1になります。 残りのDCの一方または両方をコンテナの複製DCとして選択することができます。 リクエスト本文のJSONファイルのsourceRegionおよびtargetRegionsパラメータにコンテナのプライマリDC URLと複製DC URLをそれぞれ指定します。

レプリケーション・ポリシーを設定したコンテナへの書き込みリクエストは、グローバル名前空間URLではなく、DC固有のRESTエンドポイントURLに送信する必要があります。

DC固有のRESTエンドポイントURLの形式は次のとおりです:

https://dataCenterCode.storage.oraclecloud.com/v1/Storage-identityDomainID

例 : https://us2.storage.oraclecloud.com/Storage-myDomain

REST APIを使用して異なるリージョンにコンテナ固有のポリシーを設定する

コンテナの複製ポリシーを指定するには、サービス・インスタンスのプライマリDCとジオコーピングDCが配置されているリージョン以外のデータセンターを選択します。 たとえば、サービス・インスタンスのプライマリDCとジオコーピングDCが米国リージョンのus2us6である場合、コンテナを複製する米国以外のリージョンにあるデータセンター、たとえばem2を選択できます。 リクエスト本文のJSONファイルのexternalTargetRegionsパラメータに外部コンテナのURLを指定して、コンテナのオブジェクトをレプリケートする必要がある外部コンテナを指定します。 コンテナに複数の外部複製DCを指定できます。

コンテナが外部コンテナからオブジェクトを複製する宛先である場合は、リクエスト本文JSONファイルのexternalSourceRegionsパラメータに外部コンテナのURLを指定します。 コンテナは、複数のソース・コンテナからのオブジェクトのレプリケーションの宛先にすることができます。

注意:

コンテナのレプリケーション・ポリシーを別のリージョンに設定する場合は、最初にexternalSourceRegionsパラメータを使用してターゲット・リージョンのレプリケーション・ポリシーを設定し、次にexternalTargetRegionsパラメータを使用してソース・リージョンのレプリケーションを設定します。

重要:

コンテナのレプリケーション・ポリシーを別のリージョンに設定するには、リクエスト本文JSONファイルで指定されたRESTエンドポイントURLがGUID形式であることを確認します。 例えば : https://storage-7b16fede61e1417ab83eb52e06f0e365.storage.oraclecloud.com/v1/Storage-7b16fede61e1417ab83eb52e06f0e365/myContainer

フレンドリ名形式は使用しないでください。 例えば : https://acme.storage.oraclecloud.com/v1/Storage-acme/myContainer フレンドリ名のREST Endpoint URLが変更され、無効なレプリケーション・ポリシーにつながる可能性があります。

リクエスト本文JSONファイルの作成

次のテンプレートを使用してリクエスト本文のJSONファイルを作成し、ホストに保存します。

{
  "sourceRegion": {
    "name": "primary_DC_code",
    "url": "primary_DC_url"},
  "targetRegions": [{
    "name": "replication_DC_code",
    "url": "replication_DC_url"}],
  "externalSourceRegions": [{
    "name": "external",
    "url": "external_source_url"}],
  "externalTargetRegions": [{
    "name": "external",
    "url": "external_target_url"}]
}
  • primary_DC_codeは、コンテナのプライマリDCのデータセンター・コードです。

  • primary_DC_urlは、コンテナの主DCにあるコンテナのURLです。 これはオプションのパラメータです。

  • replication_DC_codeは、コンテナのレプリケーションDCのデータセンター・コードです。

  • replication_DC_urlは、コンテナのレプリケーションDCにあるコンテナのレプリケーションのURLです。 これはオプションのパラメータです。

  • external_source_urlは、オブジェクトがコンテナに複製される外部リージョン内のコンテナのURLです。

  • external_target_urlは、コンテナ内のオブジェクトを複製する必要がある外部リージョン内のコンテナのURLです。

注意:

パラメータprimary_DC_urlreplication_DC_urlはオプションです。 データセンター・コードを提供するだけで、コマンドの通常の作業には十分です。
  • 次のシナリオでは、コンテナmyContainerのリクエスト 本文JSONファイルの例:
    • サービス・インスタンスにus2プライマリDCがあります。

    • あなたのサービス・インスタンスには、us6uscom-central-1複製DCがあります。

    • あなたのコンテナのプライマリDCはus6です。

    • コンテナの複製DCは、同じリージョン内のus2uscom-central-1です。

    この例では、GUIDベースのURLを使用してソース・リージョンとターゲット・リージョンを設定する方法を示しています。 コンテナのGUIDベースのURLがhttps://storage-7b16fede61e1417ab83eb52e06f0e365.storage.oraclecloud.com/v1/Storage-7b16fede61e1417ab83eb52e06f0e365/myContainerの場合、<fooN>storage-7b16fede61e1417ab83eb52e06f0e365<barN>7b16fede61e1417ab83eb52e06f0e365です。
    {
      "sourceRegion": {
        "name": "us6",
        "url": "https://<foo1>.storage.oraclecloud.com/v1/Storage-<bar1>/myContainer"},
      "targetRegions": [{
        "name": "us2",
        "url": "https://<foo2>.storage.oraclecloud.com/v1/Storage-<bar2>/myContainer"}, {
        "name": "uscom-central-1",
        "url": "https://<foo3>.storage.oraclecloud.com/v1/Storage-<bar3>/myContainer"}],
      "externalSourceRegions": [],
      "externalTargetRegions": []
    }
  • 次のシナリオでは、コンテナmySecondContainerのリクエスト 本文JSONファイルの例:
    • サービス・インスタンスには、us2 primary DCとus6 replication DCがあります。

    • あなたのコンテナのプライマリDCはus2です。

    • コンテナのレプリケーションDCは、同じリージョン内のus6です。

    • コンテナは、異なるリージョンにあるコンテナexternalSourceContainer1externalSourceContainer2からの複製先です。

    • コンテナ内のオブジェクトは、別のリージョンのデータセンター内のコンテナexternalTargetContainerに複製されます。

    この例では、GUIDベースのURLを使用してソース・リージョンとターゲット・リージョンを設定する方法を示しています。 コンテナのGUIDベースのURLがhttps://storage-7b16fede61e1417ab83eb52e06f0e365.storage.oraclecloud.com/v1/Storage-7b16fede61e1417ab83eb52e06f0e365/myContainerの場合、<fooN>storage-7b16fede61e1417ab83eb52e06f0e365<barN>7b16fede61e1417ab83eb52e06f0e365です。
    {
      "sourceRegion": {
        "name": "us2",
        "url": "https://<foo4>.storage.oraclecloud.com/v1/Storage-<bar4>/mySecondContainer"},
      "targetRegions": [{
        "name": "us6",
        "url": "https://<foo5>.storage.oraclecloud.com/v1/Storage-<bar5>/mySecondContainer"}],
      "externalSourceRegions": [{
        "name": "external",
        "url": "https://<foo6>.storage.oraclecloud.com/v1/Storage-<bar6>/externalSourceContainer1"}, {
        "name": "external",
        "url": "https://<foo7>.storage.oraclecloud.com/v1/Storage-<bar7>/externalSourceContainer2"}],
      "externalTargetRegions": [{
        "name": "external",
        "url": "https://<foo8>.storage.oraclecloud.com/v1/Storage-<bar8>/externalTargetContainer"}]
    }

cURLコマンド構文:コンテナのレプリケーション・ポリシーを指定する

  • 空のコンテナのレプリケーション・ポリシーを指定するには:
    curl -v -X POST \
         -H "X-Auth-Token: token" \
         -H "Content-Type: application/json" \
         -d "@file" \
         accountURL/containerName?repPolicy
    
  • コンテナの作成中にレプリケーション・ポリシーを指定するには:
    curl -v -X PUT \
         -H "X-Auth-Token: token" \
         -d "@file" \
         accountURL/containerName?repPolicy
    
  • コンテナのレプリケーション・ポリシーを読み取るには:
    curl -v -X GET \
         -H "X-Auth-Token: token" \
         accountURL/containerName?repPolicy
    

注意:

Oracle Cloud Infrastructure Object Storage ClassicにREST APIリクエストを送信すると、コンテナ名、オブジェクト名、メタデータ値の非ASCII文字はすべてURLエンコードされている必要があります。 たとえば、my containermy%20containerとしてエンコードする必要があります。%20はスペース文字のHTMLエンコードです。 同様に、my Über Containermy%20%C3%9Cber%20Containerとしてエンコードする必要があります。%20はスペース文字を表し、%C3%9CÜ文字です。

HTTPレスポンス・コード

  • 成功:
    • レプリケーション・ポリシーでコンテナを更新するとき: 204 No Content
    • コンテナを作成し、レプリケーション・ポリシーを指定するとき: 201 Created
    • コンテナのレプリケーション・ポリシーを読み込むとき: 200 OK
  • 失敗: 「Object Storage Classicのエラー・コード・リファレンス」を参照してください

cURLコマンド例

  1. このコマンドは、コンテナFirstContainerのレプリケーション・ポリシーを設定します。
    curl -v -X POST \
         -H "X-Auth-Token: AUTH_tkb4fdf39c92e9f62cca9b7c196f8b6e6b" \
         -H "Content-Type: application/json" \
         -d "@requestbody.json" \
         https://acme.storage.oraclecloud.com/v1/Storage-acme/FirstContainer?repPolicy
    

    次に、このコマンドの出力例を示します:

    > POST /v1/Storage-acme/FirstContainer?repPolicy HTTP/1.1
    > User-Agent: curl/7.49.1
    > Host: acme.storage.oraclecloud.com
    > Accept: */*
    > Content-Type: application/json
    > Content-Length: 489
    > X-Auth-Token: AUTH_tkb4fdf39c92e9f62cca9b7c196f8b6e6b
    >
    * upload completely sent off: 489 out of 489 bytes
    < HTTP/1.1 204 No Content
    < Date: Fri, 10 Nov 2017 06:32:55 GMT
    < Content-Type: text/html;charset=UTF-8
    < X-Trans-Id: txe8869b3edea348e5b49eb-0054f99743
    
  2. このコマンドは、コンテナSecondContainerを作成中にレプリケーション・ポリシーを指定します。
    curl -v -X PUT \
         -H "X-Auth-Token: AUTH_tkb4fdf39c92e9f62cca9b7c196f8b6e6b" \
         -d "@requestbody.json" \
         https://acme.storage.oraclecloud.com/v1/Storage-acme/SecondContainer?repPolicy
    

    次に、このコマンドの出力例を示します:

    > PUT /v1/Storage-acme/SecondContainer?repPolicy HTTP/1.1
    > User-Agent: curl/7.49.1
    > Host: acme.storage.oraclecloud.com
    > Accept: */*
    > X-Auth-Token: AUTH_tkb4fdf39c92e9f62cca9b7c196f8b6e6b
    >
    < HTTP/1.1 201 Created
    < Date: Thu, 09 Nov 2017 10:03:18 GMT
    < Content-Type: text/html; charset=UTF-8
    < X-Trans-Id: txe8869b3edea348e5b49eb-0054f99678
    < X-Last-Modified-Timestamp: 1510221797.90473
    < Cache-Control: no-cache
    < Pragma: no-cache
    < Content-Language: en
    
  3. このコマンドは、コンテナFirstContainerのレプリケーション・ポリシーを表示します:
    curl -v -X GET \
         -H "X-Auth-Token: AUTH_tkb4fdf39c92e9f62cca9b7c196f8b6e6b" \
         https://acme.storage.oraclecloud.com/v1/Storage-acme/FirstContainer?repPolicy
    

    次に、このコマンドの出力例を示します:

    > GET /v1/Storage-acme/FirstContainer?repPolicy HTTP/1.1
    > User-Agent: curl/7.49.1
    > Host: acme.storage.oraclecloud.com
    > Accept: */*
    > X-Auth-Token: AUTH_tkb4fdf39c92e9f62cca9b7c196f8b6e6b
    >
    < HTTP/1.1 200 OK
    < < Date: Fri, 10 Nov 2017 06:17:44 GMT
    < Content-Type: application/json;charset=UTF-8
    < X-Trans-Id: txe8869b3edea348e5b49eb-0054f99838
    {
      "mode": "ACTIVE_PASSIVE",
      "sourceRegion": {
        "name": "us2",
        "url": "https://<foo9>.storage.oraclecloud.com/v1/Storage-<bar9>/FirstContainer"
      },
      "targetRegions": [{
        "name": "us6",
        "url": "https://<foo10>.storage.oraclecloud.com/v1/Storage-<bar10>/FirstContainer"
      }],
      "externalSourceRegions": [{
        "name": "external",
        "url": "https://<foo11>.storage.oraclecloud.com/v1/Storage-<bar11>/ExternalSourceContainer"
      }],
      "externalTargetRegions": [{
        "name": "external",
        "url": "https://<foo12>.storage.oraclecloud.com/v1/Storage-<bar12>/ExternalTargetContainer"
      }]
    * STATE: PERFORM => DONE handle 0x600057870; line 1955 (connection #0)
    * multi_done
    * Connection #0 to host left intact
    }

    出力例には、ソース・リージョンとターゲット・リージョンの設定に使用されるGUIDベースのURLが表示されています。 コンテナのGUIDベースのURLがhttps://storage-7b16fede61e1417ab83eb52e06f0e365.storage.oraclecloud.com/v1/Storage-7b16fede61e1417ab83eb52e06f0e365/myContainerの場合、<fooN>storage-7b16fede61e1417ab83eb52e06f0e365<barN>7b16fede61e1417ab83eb52e06f0e365です。