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

MaxCompute:GET_SIGNED_URL_FROM_OSS

最終更新日:Jun 19, 2026

GET_SIGNED_URL_FROM_OSS 関数は、Object Storage Service (OSS) 内のファイルの署名付き URL を生成します。この URL を使用すると、一定期間、追加のアクセス認証情報なしで HTTP プロトコル経由でファイルを直接アップロード (PUT) またはダウンロード (GET) できます。

利用シーン

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

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

制限事項

  • 現在、OSS 内部ネットワーク経由でのオブジェクトテーブルの作成のみをサポートしています。

  • MaxQA のクエリ高速化は現在サポートされていません。SQL 文と一緒に SET odps.mcqa.disable=true; パラメーターを追加して実行する必要があります。

  • 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層モデルでは、Project 名と Schema 名を含む完全なOBJECT TABLE パスは、project.schema.object_table のようになります。

テーブル作成時に RoleARN 認証方式を選択した場合、このパラメーターにより、ユーザーが OSS にアクセスするための STS トークンが自動的に生成されます。

なし

key

はい

STRING

このオブジェクトテーブル内にある、アクセス対象オブジェクトの名前です。詳細については、「OBJECT TABLE の定義」の戻り結果における key パラメーターの説明をご参照ください。

なし

timeToLiveSeconds

いいえ

INT

署名付き URL の有効期間を秒単位で指定します。最小 1 秒、最大 7 日 (604800 秒) です。expiration と同時に使用することはできません。

3600 秒

expiration

いいえ

DATETIME

署名付き URL の有効期限を指定します。現在時刻より 1 秒以上、最大 7 日 (604800 秒) 先まで指定できます。timeToLiveSeconds と同時に使用することはできません。

現在時刻から 3600 秒後

httpMethod

いいえ

STRING

URL 生成後の使用方法として、ダウンロード (OSS データの読み取り) またはアップロード (OSS データの書き込み) を指定します。

  • GET:ダウンロード

  • PUT:アップロード

GET

戻り値

生成された署名付き URL を、STRING 型で返します。

使用例

ここでは杭州リージョンを例に、Elastic Compute Service (ECS) で署名付き URL を生成して OSS オブジェクトをダウンロードする方法を示します。

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

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

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

  2. ローカルクライアント (odpscmd) を使用するか、DataWorks で MaxCompute SQL ノードを作成して、オブジェクトテーブルを作成し、メタデータ キャッシュを更新します。

    -- MaxCompute プロジェクトでスキーマ機能を有効化し、3層モデルを使用できるようにします。 
    SET odps.namespace.schema=true;
    -- 対応する MaxCompute プロジェクトを選択します。 
    USE <project_name>;
    -- 対応するスキーマを選択します。 
    USE SCHEMA <schema_name>;
    -- MaxCompute プロジェクトで 2.0 データ型システムを有効にします。 
    SET odps.sql.type.system.odps2=true;
    -- 現在、MaxQA のクエリ高速化ではサポートされていません。 
    SET odps.mcqa.disable=true;
    -- オブジェクトテーブルを作成します。 
    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. オブジェクトテーブルのメタデータをクエリします。

    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. オブジェクトテーブルをクエリして署名付き 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=****"

    戻り結果:

    [xxx] opt]# curl -o /opt/ecs_signed.txt "http://object-table-test.oss-cn-hangzhou-inxxx&OSSAccessKeyId=STS.xxx&Signature=xxx&security-token=CAIS3gJxxx
    xxx
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100    38  100    38    0     0    263      0 --:--:-- --:--:-- --:--:--   265
    opt]# ls
    aliyun-security  ecs_signed.txt
    [root@iZbp1al9u5z0axrqx50mptZ opt]# cat ecs_signed.txt
    test maxcompute download files by url
    xxx opt]#

関連関数

GET_SIGNED_URL_FROM_OSS 関数は非構造化処理関数です。その他の非構造化処理関数については、「非構造化処理関数」をご参照ください。