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: 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).
|
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
-
Login ke Konsol OSS, lalu unggah data uji signedget.txt ke direktori
object-table-test/object_table_folder. Untuk langkah-langkahnya, lihat Upload objects. -
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; -
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**** | +---------------+------------+------------+---------------------+---------------+----------------------------------+--------------+------------+--------------------+ -
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 | +----------------------------------------+ -
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
-
Login ke Konsol ECS, lalu klik di panel navigasi kiri.
-
Alihkan ke wilayah Hangzhou, pilih instance target, lalu klik koneksi jarak jauh dan sambungkan ke instance ECS melalui Workbench.
-
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.