All Products
Search
Document Center

MaxCompute:GET_SIGNED_URL_FROM_OSS

Last Updated:Jun 19, 2026

Fungsi GET_SIGNED_URL_FROM_OSS digunakan untuk menghasilkan URL yang ditandatangani (signed URL) bagi file di Object Storage Service (OSS). Dengan URL tersebut, Anda dapat mengunggah (PUT) atau mengunduh (GET) file secara langsung melalui protokol HTTP dalam jangka waktu tertentu tanpa perlu menyediakan kredensial akses tambahan.

Skenario Penggunaan

MaxCompute menyediakan fitur Object Table yang memungkinkan mesin komputasi data warehouse mengakses data tidak terstruktur beserta metadatanya yang disimpan di OSS. Untuk informasi selengkapnya, lihat OBJECT TABLE definition.

Object Table menyimpan metadata objek OSS pada path tertentu dan dapat menggunakan fungsi GET_SIGNED_URL_FROM_OSS untuk menghasilkan URL yang ditandatangani secara dinamis guna mengakses file melalui operasi unggah dan unduh. Informasi lebih lanjut tersedia di Generate signed URLs to upload and download OSS objects.

Batasan Penggunaan

  • Saat ini hanya mendukung pembuatan Object Table melalui jaringan internal OSS.

  • Belum didukung untuk percepatan kueri MaxQA. Anda perlu menambahkan parameter SET odps.mcqa.disable=true; dan menjalankannya bersama pernyataan SQL.

  • Jika bucket OSS telah mengaktifkan fitur Block public access, maka tidak mungkin menghasilkan alamat signature yang dapat diakses dari internet publik melalui fungsi GET_SIGNED_URL_FROM_OSS. Pastikan konfigurasi izin bucket memungkinkan pembuatan dan penggunaan alamat signature.

Format Perintah

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

Penjelasan Parameter

Parameter

Wajib Diisi

Tipe Data

Penjelasan

Nilai Default

full_object_table_name

Ya

STRING

Dalam model tiga lapis, ini adalah path lengkap ke OBJECT TABLE, mencakup nama Project dan Schema, contohnya: project.schema.object_table.

Jika metode autentikasi RoleARN dipilih saat membuat tabel, parameter ini akan membantu pengguna menghasilkan STS Token untuk mengakses OSS secara otomatis.

Tidak ada

key

Ya

STRING

Merupakan nama objek yang diakses dalam Object Table tersebut. Untuk detail lebih lanjut, lihat penjelasan parameter key dalam hasil pengembalian OBJECT TABLE definition.

Tidak ada

timeToLiveSeconds

Tidak

INT

Durasi masa berlaku URL yang ditandatangani, minimal 1 detik dan maksimal 7 hari (604800 detik). Tidak dapat digunakan bersamaan dengan parameter expiration.

Default 3600 detik.

expiration

Tidak

DATETIME

Waktu kedaluwarsa URL yang ditandatangani. Minimal 1 detik setelah waktu saat ini, dan maksimal 7 hari (604800 detik) setelah waktu saat ini. Tidak dapat digunakan bersamaan dengan parameter timeToLiveSeconds.

Default 3600 detik setelah waktu saat ini.

httpMethod

Tidak

STRING

Metode penggunaan URL yang dihasilkan, yaitu untuk mengunduh (membaca data OSS) atau mengunggah (menulis data ke OSS).

  • GET berarti mengunduh.

  • PUT berarti mengunggah.

Nilai default adalah GET.

Penjelasan Nilai Kembalian

Mengembalikan tipe STRING berupa URL yang ditandatangani.

Contoh Penggunaan

Contoh berikut menggunakan wilayah Hangzhou untuk menunjukkan cara mengunduh objek OSS melalui URL yang ditandatangani dari instance ECS.

Saat menjalankan kode di bawah, gantilah project_name dan schema_name dengan nama Project dan Schema yang sebenarnya.

Langkah 1: Hasilkan URL untuk Mengunduh Objek OSS

  1. Login ke Konsol OSS, lalu unggah data uji signedget.txt ke direktori object-table-test/object_table_folder. Untuk langkah-langkahnya, lihat Upload objects.

  2. Gunakan klien lokal (odpscmd) atau buat node MaxCompute SQL di DataWorks untuk membuat Object Table dan merefresh cache metadata.

    -- Object Table di MaxCompute mendukung fitur Schema, aktifkan model tiga lapis.
    SET odps.namespace.schema=true;
    -- Pilih Project MaxCompute yang sesuai.
    USE <project_name>;
    -- Pilih schema yang sesuai.
    USE SCHEMA <schema_name>;
    -- Object Table di MaxCompute mendukung sistem tipe data 2.0.
    SET odps.sql.type.system.odps2=true;
    -- Saat ini belum didukung dalam 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/';
    -- Refresh cache tabel.
    ALTER TABLE test_get_signed_url_from_oss REFRESH METADATA;
  3. Kueri informasi metadata di tabel Object Table.

    SELECT * FROM test_get_signed_url_from_oss;

    Hasil yang 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 yang 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 yang 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 Melalui Server ECS

  1. Login ke Konsol ECS, lalu klik Instances & Images > 实例 di panel navigasi kiri.

  2. Alihkan ke wilayah Hangzhou, pilih instance target, lalu klik koneksi jarak jauh dan sambungkan ke instance ECS melalui Workbench.

  3. Jalankan perintah berikut di terminal untuk mengunduh objek OSS:

    -- Beralih ke direktori opt
    cd /opt
    -- Unduh objek OSS yang sesuai melalui 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=****"

    Hasil yang dikembalikan:

    [xxx] opt]# curl -o /opt/ecs_signed.txt "http://object-table-test.oss-cn-hangzhou-inxxx&SAccessKeyId=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]#

Fungsi Terkait

Fungsi GET_SIGNED_URL_FROM_OSS termasuk dalam kategori fungsi pemrosesan data tidak terstruktur. Untuk daftar lengkap fungsi pemrosesan data tidak terstruktur lainnya, lihat Fungsi Pemrosesan Data Tidak Terstruktur.