Traffine I/O

Bahasa Indonesia

2022-07-08

Presigned URL di GCS

Presigned URL di Google Cloud Storage

Dalam Google Cloud Storage (GCS), Presigned URL memberikan akses sementara ke objek tertentu yang disimpan dalam bucket. Fitur ini sangat membantu ketika Anda perlu berbagi objek dengan pengguna yang tidak memiliki akses langsung ke GCS.

Presigned URL dibuat menggunakan kredensial pengguna yang memiliki izin yang tepat untuk mengakses objek yang dituju. Setelah URL dibuat, dapat dibagikan kepada pengguna mana pun. Ketika URL ini digunakan, GCS menginterpretasikan permintaan tersebut seolah-olah dibuat oleh pengguna yang awalnya membuat URL tersebut.

Kelebihan utama dari Presigned URL di GCS terletak pada fleksibilitas dan kontrolnya. Mereka dapat dikonfigurasi untuk mengizinkan operasi tertentu seperti BACA (GET), TULIS (PUT), atau HAPUS. Selain itu, URL ini bersifat sementara, dengan waktu kedaluwarsa yang ditetapkan setelahnya URL tersebut tidak dapat lagi digunakan.

Satu hal penting yang perlu diperhatikan adalah bahwa daftar kontrol keamanan dan akses (ACL) objek tidak diperiksa saat menggunakan Presigned URL. Hal ini karena URL itu sendiri menyatakan bahwa pengguna tersebut terautentikasi dan berwenang untuk mengakses objek tersebut.

Kasus Penggunaan Presigned URL di GCS

Presigned URL di GCS sangat serbaguna dan dapat digunakan dalam berbagai skenario. Berikut ini adalah beberapa kasus penggunaan umum:

  • Berbagi Objek Pribadi dengan Pengguna yang Tidak Memiliki Akun GCP
    Misalkan Anda memiliki data atau file di GCS yang ingin Anda bagikan dengan seseorang, tetapi orang lain tersebut tidak memiliki akun Google Cloud Platform (GCP). Alih-alih membuat data tersebut menjadi publik atau meminta mereka untuk membuat akun GCP, Anda dapat dengan mudah membuat Presigned URL dan membagikannya kepada mereka.

  • Memberikan Akses Sementara ke Suatu Objek
    Dalam kasus di mana Anda perlu memberikan akses sementara kepada seseorang ke objek dalam bucket GCS Anda, Presigned URL adalah solusi yang sempurna. Anda dapat menentukan waktu kedaluwarsa URL, setelahnya URL tersebut tidak dapat lagi digunakan.

  • Mengunggah atau Mengunduh File Besar ke/dari Aplikasi Web atau Seluler
    Presigned URL dapat digunakan dalam aplikasi web atau seluler untuk langsung mengunggah atau mengunduh file besar ke/dari GCS. Hal ini mengurangi beban penanganan transfer file dari server aplikasi Anda dan dapat memberikan pengalaman pengguna yang lebih baik, karena pengguna tidak perlu menunggu file diunggah ke server sebelum ditransfer ke GCS.

  • Mendistribusikan Konten kepada Pengguna di Lokasi Geografis yang Berbeda
    Jika aplikasi Anda perlu mendistribusikan konten kepada pengguna di lokasi geografis yang berbeda, Anda dapat menggunakan Presigned URL untuk memungkinkan pengguna mengunduh konten langsung dari GCS, yang dapat memberikan kecepatan unduh yang lebih cepat karena jaringan global GCS.

Membuat Presigned URL di GCS

Membuat Presigned URL di GCS melibatkan beberapa langkah, dan Anda perlu memiliki izin yang tepat pada bucket dan objek GCS.

Sebelum Anda dapat membuat Presigned URL, pastikan Anda memiliki izin yang tepat. Hal ini biasanya berarti memiliki peran Manajer Objek Penyimpanan (roles/storage.objectAdmin) atau Penampil Objek Penyimpanan (roles/storage.objectViewer) dalam Identity and Access Management (IAM). Jika Anda tidak memiliki izin ini, Anda perlu meminta pemilik bucket atau pemilik proyek untuk memberikan izin tersebut kepada Anda.

Anda juga memerlukan akun layanan dengan izin yang diperlukan, dan Anda perlu mengunduh file JSON kunci pribadi untuk akun layanan tersebut. File ini akan digunakan untuk menghasilkan Presigned URL.

Setelah Anda memiliki izin yang diperlukan dan file kunci akun layanan, Anda dapat membuat Presigned URL. Hal ini dapat dilakukan menggunakan perintah gsutil signurl atau menggunakan pustaka klien GCS dalam bahasa pemrograman seperti Python, Node.js, atau Java.

Berikut adalah contoh penggunaan gsutil:

bash
$ gsutil signurl -d 10m /path/to/service-account-key.json gs://your-bucket/your-object

Perintah ini akan menghasilkan Presigned URL yang berlaku selama 10 menit (-d 10m) untuk objek yang ditentukan (gs://your-bucket/your-object). Opsi -d menentukan durasi berlakunya URL.

Setelah Anda telah membuat Presigned URL, Anda dapat memberikannya kepada pengguna atau menggunakannya dalam aplikasi Anda. Ketika seorang pengguna menerima Presigned URL, mereka dapat menggunakannya untuk mengunduh atau mengunggah file secara langsung ke/dari bucket GCS.

URL mencakup nama bucket dan objek, ID akses entitas yang menandatangani, dan tanda tangan yang mengotentikasi permintaan. Penting untuk dicatat bahwa URL hanya akan berfungsi selama periode waktu yang ditentukan dan untuk operasi yang ditentukan (GET, PUT, dll.).

Berikut adalah contoh bagaimana pengguna dapat menggunakan Presigned URL untuk mengunduh sebuah file:

bash
$ curl 'https://storage.googleapis.com/your-bucket/your-object?GoogleAccessId=your-service-account-email&Expires=expiration-timestamp&Signature=signature'

Dalam perintah ini, curl digunakan untuk mengirim permintaan GET ke Presigned URL. Responnya adalah konten objek yang ditentukan.

Demikian pula, pengguna dapat menggunakan Presigned URL untuk mengunggah sebuah file dengan permintaan PUT:

bash
$ curl -X PUT -H 'Content-Type: your-content-type' -d @/path/to/your-file 'presigned-url'

Dalam perintah ini, -X PUT menentukan permintaan PUT, -H 'Content-Type: your-content-type' menentukan jenis konten dari file yang diunggah, dan -d @/path/to/your-file menentukan file yang akan diunggah. presigned-url adalah Presigned URL yang telah Anda buat sebelumnya.

Referensi

https://cloud.google.com/storage/docs/access-control/signed-urls

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!