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_OSStidak 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 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).
| 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
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.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;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**** | +---------------+------------+------------+---------------------+---------------+----------------------------------+--------------+------------+--------------------+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 | +----------------------------------------+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
Masuk ke Konsol ECS. Di panel navigasi di sebelah kiri, pilih .
Beralih ke wilayah China (Hangzhou), pilih instance target, klik Koneksi Jarak Jauh, dan sambungkan ke instance ECS menggunakan Workbench.
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:

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.