Panduan memulai: Menggunakan Cloud Storage dengan Rust

Google Cloud Storage adalah layanan terkelola untuk menyimpan data tidak terstruktur.

Library klien Rust menyediakan API idiomatis untuk mengakses layanan ini. Library klien melanjutkan download dan upload yang terganggu, serta otomatis melakukan pemeriksaan integritas pada data. Untuk operasi metadata, library klien dapat mencoba kembali permintaan yang gagal, dan secara otomatis melakukan polling pada operasi yang berjalan lama.

Panduan ini menunjukkan cara membuat bucket Cloud Storage, mengupload objek ke bucket ini, lalu membaca kembali objek tersebut.

Sebelum memulai panduan ini, buat project Google Cloud dengan penagihan diaktifkan.

Menambahkan dependensi library klien

cargo add google-cloud-storage

Membuat bucket penyimpanan

Klien untuk melakukan operasi pada bucket dan metadata objek disebut StorageControl.

    use google_cloud_storage::model::{Bucket, bucket::IamConfig, bucket::iam_config::UniformBucketLevelAccess};
    use google_cloud_storage::client::StorageControl;
    let control = StorageControl::builder().build().await?;

Untuk membuat bucket, Anda harus memberikan nama project dan ID bucket.

    let bucket = control
        .create_bucket()
        .set_parent("projects/_")
        .set_bucket_id(bucket_id)
        .set_bucket(
            gcs::model::Bucket::new()
                .set_project(format!("projects/{project_id}"))
        )

Anda juga dapat memberikan atribut lain untuk bucket. Misalnya, jika Anda ingin semua objek dalam bucket menggunakan izin yang sama, Anda dapat mengaktifkan Akses level bucket seragam.

    Bucket::new()
        .set_project(format!("projects/{project_id}"))
        .set_iam_config(
            IamConfig::new()
                .set_uniform_bucket_level_access(
                    UniformBucketLevelAccess::new()
                        .set_enabled(true),
            ),
        ),

Kemudian, kirim permintaan ini dan tunggu responsnya.

        .send()
        .await?;
    println!("bucket successfully created {bucket:?}");

Mengunggah objek

Klien untuk melakukan operasi pada data objek disebut Storage.

    use google_cloud_storage::client::Storage;
    let client = Storage::builder().build().await?;

Dalam kasus ini, Anda akan membuat objek bernama hello.txt dengan ucapan Hello World!.

    let object = client
        .upload_object(&bucket.name, "hello.txt", "Hello World!")
        .send_buffered()
        .await?;
    println!("object successfully uploaded {object:?}");

Download objek

Untuk mendownload konten objek, gunakan metode read_object().

    let mut reader = client.read_object(&bucket.name, "hello.txt").send().await?;
    let mut contents = Vec::new();
    while let Some(chunk) = reader.next().await.transpose()? {
        contents.extend_from_slice(&chunk);
    }
    println!(
        "object contents successfully downloaded {:?}",
        bytes::Bytes::from_owner(contents)
    );

Membersihkan resource

Terakhir, hapus objek dan bucket untuk membersihkan resource yang digunakan dalam panduan ini.

    control
        .delete_object()
        .set_bucket(&bucket.name)
        .set_object(&object.name)
        .set_generation(object.generation)
        .send()
        .await?;
    control
        .delete_bucket()
        .set_name(&bucket.name)
        .send()
        .await?;