機械翻訳について

一時URLを使用したオブジェクトのダウンロード

期間限定の一時URLを作成して、Oracle Cloud Infrastructure Object Storage Classicからオブジェクトをダウンロードするための一時的な安全なアクセスを提供することができます。

オブジェクトの一時URLを生成するには、アカウント・レベルまたはコンテナ・レベルで前に指定した秘密キーを使用する必要があります。 どちらの場合も、最大2つのキーを指定できます。
  • アカウント・レベルのキーを使用して、Oracle Cloud Infrastructure Object Storage Classicインスタンス内の任意のコンテナからオブジェクトをダウンロードできます。
  • コンテナレベルのキーを使用すると、そのコンテナからオブジェクトをダウンロードできます。

開始する前に

一時URLを生成するには、OpenStack Swift CLIを使用するか、プログラミング言語で記述されたスクリプトを使用します。 このドキュメントには、OpenStack Swift CLIを使用した例とPythonスクリプトを使用した例があります。

ローカル・ホストに次のソフトウェアをインストールします。

手順

  1. キーを設定して一時URLを保護します。 アカウント・レベルおよび特定のコンテナにキーを設定し、それらのキーのいずれかを使用して一時URLを生成できます。

    • アカウントにキーを設定するには、次のcURLコマンドを実行します。

      curl -X POST \
           -H 'X-Auth-Token: token' \
           -H 'X-Account-Meta-Temp-URL-Key: key' \
           accountURL
      • tokenは、Oracle Cloud Infrastructure Object Storage Classicから取得した認証トークンです。
      • accountURLは、サービス・インスタンスのRESTエンドポイントURLです。
      • keyは任意に選択した文字列です。
      例:
      curl -X POST \
           -H 'X-Auth-Token: AUTH_tk6b7d5b0d94e653217ee0898d43613a07' \
           -H 'X-Account-Meta-Temp-URL-Key: tempkey' \
           https://acme.storage.oraclecloud.com/v1/Storage-acme
    • コンテナにキーを設定するには、次のcURLコマンドを実行します。
      curl -X POST \
           -H 'X-Auth-Token: token' \
           -H 'X-Container-Meta-Temp-URL-Key: key' \
           accountURL/containerName
      • tokenは、Oracle Cloud Infrastructure Object Storage Classicから取得した認証トークンです。
      • accountURLは、サービス・インスタンスのRESTエンドポイントURLです。
      • keyは任意に選択した文字列です。
      • containerNameは、オブジェクトをダウンロードするコンテナの名前です。
      例:
      curl -X POST \
           -H 'X-Auth-Token: AUTH_tk6b7d5b0d94e653217ee0898d43613a07' \
           -H 'X-Container-Meta-Temp-URL-Key: tempkey1' \
           https://acme.storage.oraclecloud.com/v1/Storage-acme/myFirstContainer
  2. 一時URLを生成するには、OpenStack Swift CLIを使用するか、プログラミング言語で記述されたスクリプトを使用します。

    OpenStack Swift CLIを使用して一時URLを生成するには、次のステップを実行します。

    1. 次のコマンドを実行します。

      swift tempurl GET seconds /v1/Storage-identityDomainName/containerName/objectName key
      • secondsは、一時URLの生成後、一時URLが有効である時間(秒単位)です。
      • identityDomainNameは、Oracle Cloud Infrastructure Object Storage Classicアカウントのアイデンティティ・ドメイン名です。
      • containerNameはコンテナの名前です。
      • objectNameは、一時URLを使用してダウンロードする必要があるオブジェクトの名前です。
      • keyは、前の手順でX-Account-Meta-Temp-URL-KeyヘッダーまたはX-Container-Meta-Temp-URL-Keyヘッダーに割り当てた値です。
      例:
      swift tempurl GET 300 /v1/Storage-acme/FirstContainer/tempobject tempkey

      出力:

      /v1/Storage-acme/FirstContainer/tempobject?temp_url_sig=555417815bf1288b46c6c2ae9fc2f90a437a3110&temp_url_expires=1467281788

      出力には、オブジェクトのパス(/v1/Storage-acme/FirstContainer/tempobject)と次の追加問合せパラメータが含まれます:
      • temp_url_sig: URLの暗号署名
      • temp_url_expires: URLが期限切れになる日付と時間(UNIX Epoch形式)。
    2. (オプション) コンテナで終わるパスの一時URLを生成した場合、生成されるURLにはオブジェクト名は含められません。 次の例に示すように、URLのコンテナ名と?の間に必要なオブジェクトの名前を挿入する必要があります。

      /v1/containerName/objectName?temp_url_sig=value&temp_url_expires=value

    3. OpenStack Swift CLIによって生成される一時URLは、完全なURLではありません。 完全なURLを作成するには、生成されたパスの前にアカウントURLを次のように付加します。

      https://acme.storage.oraclecloud.com/v1/Storage-acme/containerName/objectName?temp_url_sig=value&temp_url_expires=value
      例:
      https://acme.storage.oraclecloud.com/v1/Storage-acme/FirstContainer/tempobject?temp_url_sig=555417815bf1288b46c6c2ae9fc2f90a437a3110&temp_url_expires=1467281788
  3. または(OpenStack Swift CLIを使用するかわりに)、Pythonまたはその他のプログラミング言語を使用して作成したHMAC-SHA1署名を使用して、オブジェクトの一時URLを生成できます。

    HMAC-SHA1署名には、次のものを含める必要があります。
    • GETメソッド
    • URLが期限切れになる日付と時間
    • キー: 前の手順でX-Account-Meta-Temp-URL-KeyヘッダーまたはX-Container-Meta-Temp-URL-Keyヘッダーに割り当てた値。
    • 一時URLを使用してダウンロードする必要があるオブジェクトのパス。

      /v1/Storage-identityDomainName/containerName/objectName

      オブジェクト名を指定せずに、パスをコンテナで終わらせることができます。 生成された一時URLは、指定したコンテナ内の任意のオブジェクトをダウンロードするために使用できます。 コンテナで終わるパスの構文は、/v1/Storage-identityDomainName/containerNameのようになります。

    例:

    次の詳細を含むサンプルCloudアカウント:
    • アカウント名: acme
    • RESTエンドポイントURL : https://acme.storage.oraclecloud.com/v1/Storage-acme
    • RESTエンドポイント(永続)URL : https://storage-7b16fede61e1417ab83eb52e06f0e365.storage.oraclecloud.com/v1/Storage-7b16fede61e1417ab83eb52e06f0e365

      注意:

      2017年11月以降に作成されたアカウントのREST Endpoint (Permanent)URLが表示されます。

    このセクションの例では、サンプルのCloudアカウントのRESTエンドポイントURLが使用されています。 REST Endpoint (Permanent)URLを使用するには、https://acme.storage.oraclecloud.com/v1/Storage-acmehttps://storage-7b16fede61e1417ab83eb52e06f0e365.storage.oraclecloud.com/v1/Storage-7b16fede61e1417ab83eb52e06f0e365に置き換えます。

    次のPythonコード・スニペットの例は、指定した入力を使用して一時URLを生成します。

    # USER INPUT: Specify the following parameters:
    serviceInstanceName = 'Storage' # Leave as is unless your service instance has a different name
    identityDomainName = 'acme' # Name of your identity domain
    container = 'myContainer' # Container that has the objects you need the tempURL for
    key = 'mykey' # X-Container-Meta-Temp-Url-Key or X-Account-Meta-Temp-Url-Key value
    object = 'myObject' # Object name that you need the tempURL for. This is optional if a container-level key is used.
    urlDuration = 300 # Seconds for which the temp URL should work
    serviceRestEndpoint = 'https://acme.storage.oraclecloud.com/v1/Storage-acme' # REST endpoint URL of your service instance
    
    # CODE TO GENERATE THE TEMPORARY URL: Don't change anything in this section
    import hmac
    from hashlib import sha1
    from time import time
    path = '/v1/' + serviceInstanceName + '-' + identityDomainName + '/' + container + '/' + object
    expires = int(time() + urlDuration)
    hmac_body = '%s\n%s\n%s' % ('GET', expires, path)
    sig = hmac.new(key, hmac_body, sha1).hexdigest()
    url = serviceRestEndpoint + '/' + container + '/' + object +'?temp_url_sig=' + sig + '&temp_url_expires=' + str(expires)
    print(url)
    1. このPythonコードのスニペットをプレーン・テキスト・ファイルにコピーします。
    2. コードのUSER INPUTセクションで、コード内のコメントの説明に従って、すべてのパラメータに適切な値を入力します。
    3. ファイルを保存してファイル名をメモします(たとえば、tempURL.py)。
    4. Pythonスクリプトを実行します。

      python tempURL.py

      指定したオブジェクトまたはコンテナの一時URLが、スクリプトによって生成および表示されます。

      :

      • オブジェクトの一時URL : https://acme.storage.oraclecloud.com/v1/Storage-acme/containerName/objectName?temp_url_sig=value&temp_url_expires=value
      • コンテナの一時URL : https://acme.storage.oraclecloud.com/v1/containerName?temp_url_sig=value&temp_url_expires=value

        注意:

        コンテナで終わる一時URLを使用してオブジェクトをダウンロードするには、次の例に示すようにURLのコンテナ名と?の間にオブジェクト名を挿入する必要があります。

        https://acme.storage.oraclecloud.com/v1/Storage-acme/containerName/objectName?temp_url_sig=value&temp_url_expires=value

  4. オブジェクトをダウンロードする必要があるユーザーにこの一時URLを渡します。