全部产品
Search
文档中心

MaxCompute:GET_SIGNED_URL_FROM_OSS

更新时间:Oct 27, 2025

Fungsi GET_SIGNED_URL_FROM_OSS menghasilkan URL yang telah ditandatangani untuk file di Layanan Penyimpanan Objek (OSS). URL ini memungkinkan Anda mengunggah (PUT) atau mengunduh (GET) file melalui HTTP selama periode tertentu tanpa memerlukan kredensial akses tambahan.

Skenario

MaxCompute menyediakan fitur Object Table, yang memungkinkan mesin komputasi gudang data mengakses data tidak terstruktur dan metadata-nya yang disimpan di OSS. Untuk informasi lebih lanjut, lihat Definisi OBJECT TABLE.

Object Table menyimpan metadata objek OSS dalam jalur tertentu. Fungsi GET_SIGNED_URL_FROM_OSS secara dinamis menghasilkan URL yang telah ditandatangani untuk mengunggah dan mengunduh file yang sesuai. Untuk informasi lebih lanjut, lihat Hasilkan URL yang ditandatangani untuk mengunggah dan mengunduh objek OSS.

Batasan

  • Object Tables hanya dapat dibuat di dalam jaringan internal OSS.

  • Fungsi ini tidak didukung untuk percepatan kueri MaxQA. Anda harus menambahkan parameter SET odps.mcqa.disable=true; dan menjalankannya dengan Pernyataan SQL.

  • Jika fitur Blokir Akses Publik diaktifkan untuk Bucket OSS, fungsi GET_SIGNED_URL_FROM_OSS tidak dapat menghasilkan URL yang ditandatangani yang dapat diakses publik. Pastikan izin bucket mengizinkan pembuatan dan penggunaan URL yang ditandatangani.

Sintaks

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

Parameter

Parameter

Diperlukan

Tipe data

Deskripsi

Nilai default

full_object_table_name

Ya

STRING

Pada model Lapisan 3, ini adalah jalur lengkap dari OBJECT TABLE. Jalur mencakup nama proyek dan skema, seperti project.schema.object_table.

Jika Anda memilih otentikasi RoleARN saat membuat tabel, parameter ini membantu menghasilkan token Security Token Service (STS) secara otomatis untuk mengakses OSS.

Tidak ada

key

Ya

STRING

Nama objek yang akan diakses di Object Table. Untuk informasi lebih lanjut, lihat deskripsi parameter key dalam hasil kembalian dari Lihat properti OBJECT TABLE.

Tidak ada

timeToLiveSeconds

Tidak

INT

Periode validitas URL yang ditandatangani dalam detik. Nilai minimum adalah 1 detik. Nilai maksimum adalah 7 hari (604.800 detik). Anda tidak dapat menggunakan parameter ini bersamaan dengan expiration.

3.600 detik.

expiration

Tidak

DATETIME

Waktu kedaluwarsa URL yang ditandatangani. Waktu harus setidaknya 1 detik setelah waktu saat ini dan tidak lebih dari 7 hari (604.800 detik) setelah waktu saat ini. Anda tidak dapat menggunakan parameter ini bersamaan dengan timeToLiveSeconds.

3.600 detik setelah waktu saat ini.

httpMethod

Tidak

STRING

Metode HTTP yang digunakan dengan URL yang dihasilkan. Ini menentukan apakah akan mengunduh (membaca data dari OSS) atau mengunggah (menulis data ke OSS).

  • GET: Unduh objek.

  • PUT: Unggah objek.

Nilai defaultnya adalah GET.

Nilai kembalian

Mengembalikan nilai STRING, yaitu URL yang telah ditandatangani yang dihasilkan.

Contoh

Bagian ini memberikan contoh di wilayah China (Hangzhou), menunjukkan cara menghasilkan URL yang telah ditandatangani dan menggunakannya untuk mengunduh objek OSS dari instance Elastic Compute Service (ECS).

Saat menjalankan kode berikut, ganti project_name dan schema_name dengan nama proyek dan skema Anda sebenarnya.

Langkah 1: Hasilkan URL untuk mengunduh objek OSS

  1. Masuk ke Konsol OSS dan unggah file data uji signedget.txt ke direktori object-table-test/object_table_folder. Untuk informasi lebih lanjut, lihat Unggah File.

  2. Gunakan klien lokal (odpscmd) atau buat Node SQL MaxCompute di DataWorks untuk membuat Object Table dan perbarui cache metadata-nya.

    -- Object Tables di proyek MaxCompute mendukung skema. Aktifkan model Lapisan 3.
    SET odps.namespace.schema=true;
    
    -- Pilih proyek MaxCompute target.
    USE <project_name>;
    
    -- Pilih skema target.
    USE SCHEMA <schema_name>;
    
    -- Object Tables di proyek MaxCompute mendukung sistem tipe data 2.0.
    SET odps.sql.type.system.odps2=true;
    
    -- Fitur ini saat ini tidak didukung untuk percepatan kueri MaxQA.
    SET odps.mcqa.disable=true;
    
    -- Buat 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/';
    
    -- Perbarui cache tabel.
    ALTER TABLE test_get_signed_url_from_oss REFRESH METADATA;
  3. Kueri metadata di Object Table.

    SELECT * FROM test_get_signed_url_from_oss;

    Hasil berikut dikembalikan:

    +---------------+------------+------------+---------------------+---------------+----------------------------------+--------------+------------+--------------------+
    | 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. Baca data objek menggunakan fungsi 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;

    Hasil berikut dikembalikan:

    +----------------------------------------+
    | _c0                                    |
    +----------------------------------------+
    | test maxcompute download files by url  |
    +----------------------------------------+
  5. Kueri Object Table dan hasilkan URL yang ditandatangani.

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

    Hasil berikut dikembalikan:

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

Langkah 2: Unduh dari server ECS

  1. Masuk ke Konsol ECS. Di panel navigasi di sebelah kiri, pilih Instances & Images > Instances.

  2. Beralih ke wilayah China (Hangzhou), pilih instance target, klik Koneksi Jarak Jauh, dan sambungkan ke instance ECS menggunakan Workbench.

  3. Di kotak dialog terminal, jalankan perintah berikut untuk mengunduh objek OSS:

    -- Beralih ke direktori /opt.
    cd /opt
    
    -- Unduh objek OSS menggunakan URL yang ditandatangani.
    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=****"

    Gambar berikut menunjukkan hasil yang dikembalikan:

    yuddd

Fungsi terkait

Fungsi GET_SIGNED_URL_FROM_OSS digunakan untuk memproses data tidak terstruktur. Untuk informasi lebih lanjut tentang fungsi untuk memproses data tidak terstruktur, lihat Fungsi untuk Memproses Data Tidak Terstruktur.