Google Cloud Storage は、非構造化データを保存するためのマネージド サービスです。
Rust クライアント ライブラリは、このサービスにアクセスするための慣用的な API を提供します。クライアント ライブラリは、中断されたダウンロードとアップロードを再開し、データの整合性チェックを自動的に実行します。メタデータ オペレーションの場合、クライアント ライブラリは失敗したリクエストを再試行し、長時間実行オペレーションを自動的にポーリングできます。
このガイドでは、Cloud Storage バケットを作成し、このバケットにオブジェクトをアップロードしてから、オブジェクトを読み取る方法について説明します。
このガイドを開始する前に、課金が有効になっている Google Cloud プロジェクトを作成します。
クライアント ライブラリの依存関係を追加する
cargo add google-cloud-storage
Storage バケットを作成する
バケットとオブジェクトのメタデータに対するオペレーションを実行するクライアントは 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?;
バケットを作成するには、プロジェクト名とバケット ID を指定する必要があります。
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}"))
)
バケットの他の属性を指定することもできます。たとえば、バケット内のすべてのオブジェクトで同じ権限を使用する場合は、均一なバケットレベルのアクセスを有効にします。
Bucket::new()
.set_project(format!("projects/{project_id}"))
.set_iam_config(
IamConfig::new()
.set_uniform_bucket_level_access(
UniformBucketLevelAccess::new()
.set_enabled(true),
),
),
このリクエストを送信して、レスポンスを待ちます。
.send()
.await?;
println!("bucket successfully created {bucket:?}");
オブジェクトをアップロードする
オブジェクト データに対してオペレーションを実行するクライアントは、Storage と呼ばれます。
use google_cloud_storage::client::Storage;
let