すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:GET_SIGNED_URL_FROM_OSS

最終更新日:Oct 27, 2025

GET_SIGNED_URL_FROM_OSS 関数は、Object Storage Service (OSS) 内のファイルの署名付き URL を生成します。この URL を使用すると、指定された期間、追加のアクセス資格情報を必要とせずに、HTTP 経由でファイルを直接アップロード (PUT) またはダウンロード (GET) できます。

シナリオ

MaxCompute は Object Table 機能を提供します。この機能により、データウェアハウスコンピュートエンジンは、OSS に保存されている非構造化データとそのメタデータにアクセスできます。詳細については、「OBJECT TABLE の定義」をご参照ください。

Object Table は、指定されたパスにある OSS オブジェクトのメタデータを格納します。GET_SIGNED_URL_FROM_OSS 関数は、対応するファイルをアップロードおよびダウンロードするための署名付き URL を動的に生成します。詳細については、「署名付き URL を生成して OSS オブジェクトをアップロードおよびダウンロードする」をご参照ください。

制限事項

  • Object Table は、OSS 内部ネットワーク内でのみ作成できます。

  • この関数は MaxQA クエリアクセラレーションではサポートされていません。SET odps.mcqa.disable=true; パラメーターを追加し、SQL 文と一緒に実行する必要があります。

  • OSS バケットで パブリックアクセスのブロック 機能が有効になっている場合、GET_SIGNED_URL_FROM_OSS 関数はパブリックにアクセス可能な署名付き URL を生成できません。バケットの権限で署名付き URL の生成と使用が許可されていることを確認してください。

構文

STRING GET_SIGNED_URL_FROM_OSS (
  STRING <full_object_table_name>, 
  STRING <key>
  [, INT <timeToLiveSeconds>] 
  [, DATETIME <expiration>]
  [, STRING <httpMethod>]
)

パラメーター

パラメーター

必須

データの型

説明

デフォルト値

full_object_table_name

はい

STRING

3 層モデルでは、これは OBJECT TABLE の完全なパスです。パスには、project.schema.object_table のようにプロジェクト名とスキーマ名が含まれます。

テーブルの作成時に RoleARN 認証を選択した場合、このパラメーターは OSS にアクセスするためのセキュリティトークンサービス (STS) トークンを自動的に生成するのに役立ちます。

なし

key

はい

STRING

Object Table でアクセスするオブジェクトの名前。詳細については、「OBJECT TABLE のプロパティの表示」の戻り結果における key パラメーターの説明をご参照ください。

なし

timeToLiveSeconds

いいえ

INT

署名付き URL の有効期間 (秒単位)。最小値は 1 秒です。最大値は 7 日 (604,800 秒) です。このパラメーターは expiration と一緒に使用することはできません。

3600 秒。

expiration

いいえ

DATETIME

署名付き URL の有効期限。時刻は現在時刻の 1 秒後以降で、かつ現在時刻の 7 日 (604,800 秒) 後までである必要があります。このパラメーターは timeToLiveSeconds と一緒に使用することはできません。

現在時刻から 3600 秒後。

httpMethod

いいえ

STRING

生成された URL で使用する HTTP メソッド。これにより、ダウンロード (OSS からのデータ読み取り) するか、アップロード (OSS へのデータ書き込み) するかを指定します。

  • GET: オブジェクトをダウンロードします。

  • PUT: オブジェクトをアップロードします。

デフォルト値は GET です。

戻り値

生成された署名付き URL である STRING 値を返します。

このセクションでは、中国 (杭州) リージョンでの例を示します。署名付き URL を生成し、それを使用して Elastic Compute Service (ECS) インスタンスから OSS オブジェクトをダウンロードする方法を示します。

次のコードを実行するときは、project_nameschema_name を実際のプロジェクト名とスキーマ名に置き換えてください。

ステップ 1: OSS オブジェクトをダウンロードするための URL を生成する

  1. OSS コンソールにログインし、テストデータファイル signedget.txtobject-table-test/object_table_folder ディレクトリにアップロードします。詳細については、「ファイルのアップロード」をご参照ください。

  2. ローカルクライアント (odpscmd) を使用するか、DataWorks で MaxCompute SQL ノードを作成して、Object Table を作成し、そのメタデータキャッシュをリフレッシュします。

    -- MaxCompute プロジェクトの Object Table はスキーマをサポートしています。3 層モデルを有効にします。
    SET odps.namespace.schema=true;
    
    -- ターゲットの MaxCompute プロジェクトを選択します。
    USE <project_name>;
    
    -- ターゲットスキーマを選択します。
    USE SCHEMA <schema_name>;
    
    -- MaxCompute プロジェクトの Object Table は 2.0 データ型システムをサポートしています。
    SET odps.sql.type.system.odps2=true;
    
    -- この機能は現在、MaxQA クエリアクセラレーションではサポートされていません。
    SET odps.mcqa.disable=true;
    
    -- Object Table を作成します。
    CREATE OBJECT TABLE IF NOT EXISTS test_get_signed_url_from_oss 
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/object-table-test/object_table_folder/';
    
    -- テーブルキャッシュをリフレッシュします。
    ALTER TABLE test_get_signed_url_from_oss REFRESH METADATA;
  3. Object Table のメタデータをクエリします。

    SELECT * FROM test_get_signed_url_from_oss;

    次の結果が返されます。

    +---------------+------------+------------+---------------------+---------------+----------------------------------+--------------+------------+--------------------+
    | key           | size       | type       | last_modified       | storage_class | etag                             | restore_info | owner_id   | owner_display_name |
    +---------------+------------+------------+---------------------+---------------+----------------------------------+--------------+------------+--------------------+
    | signedget.txt | 38         | Normal     | 2025-06-04 01:36:52 | Standard      | 96D8258845DAB51BC9B****6E61A2563 | NONE         | 13****     | 13****             |
    +---------------+------------+------------+---------------------+---------------+----------------------------------+--------------+------------+--------------------+
  4. GET_DATA_FROM_OSS 関数を使用してオブジェクトデータを読み取ります。

    SELECT 
      STRING(   
        GET_DATA_FROM_OSS(
          '<project_name>.<schema_name>.test_get_signed_url_from_oss',
          key
        )
      )
    FROM test_get_signed_url_from_oss;

    次の結果が返されます。

    +----------------------------------------+
    | _c0                                    |
    +----------------------------------------+
    | test maxcompute download files by url  |
    +----------------------------------------+
  5. Object Table をクエリして、署名付き URL を生成します。

    SELECT GET_SIGNED_URL_FROM_OSS(  
      '<project_name>.<schema_name>.test_get_signed_url_from_oss',    
      key) 
    FROM test_get_signed_url_from_oss;

    次の結果が返されます。

    +------------+
    | _c0        |
    +------------+
    | http://object-table-test.oss-cn-hangzhou-internal.aliyuncs.com/object_table_folder%2Fsignedget.txt?Expires=17490****&OSSAccessKeyId=STS.****&Signature=****&security-token=**** |
    +------------+

ステップ 2: ECS サーバーからダウンロードする

  1. ECS コンソールにログインします。左側のナビゲーションウィンドウで、[インスタンスとイメージ] > [インスタンス] を選択します。

  2. 中国 (杭州) リージョンに切り替え、ターゲットインスタンスを選択し、[リモート接続] をクリックして、Workbench を使用して ECS インスタンスに接続します。

  3. ターミナルダイアログボックスで、次のコマンドを実行して OSS オブジェクトをダウンロードします。

    -- /opt ディレクトリに切り替えます。
    cd /opt
    
    -- 署名付き URL を使用して OSS オブジェクトをダウンロードします。
    curl -o /opt/ecs_signed.txt "http://object-table-test.oss-cn-hangzhou-internal.aliyuncs.com/object_table_folder%2Fsignedget.txt?Expires=17490****&OSSAccessKeyId=STS.****&Signature=****&security-token=****"

    次の図に、返された結果を示します。

    yuddd

関連関数

GET_SIGNED_URL_FROM_OSS 関数は、非構造化データを処理するために使用されます。非構造化データを処理するための関数の詳細については、「非構造化データを処理するための関数」をご参照ください。