Google Cloud Storage est un service géré permettant de stocker des données non structurées.
La bibliothèque cliente Rust fournit une API idiomatique pour accéder à ce service. La bibliothèque cliente reprend les téléchargements et importations interrompus, et effectue automatiquement des vérifications de l'intégrité des données. Pour les opérations sur les métadonnées, la bibliothèque cliente peut réessayer les requêtes ayant échoué et interroger automatiquement les opérations de longue durée.
Ce guide explique comment créer un bucket Cloud Storage, y importer un objet, puis le relire.
Avant de commencer ce guide, créez un projet Google Cloud avec la facturation activée.
Ajouter la dépendance de la bibliothèque cliente
cargo add google-cloud-storage
Créer un bucket de stockage
Le client permettant d'effectuer des opérations sur les buckets et les métadonnées d'objet est appelé 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?;
Pour créer un bucket, vous devez fournir le nom de votre projet et l'ID du 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}"))
)
Vous pouvez également fournir d'autres attributs pour le bucket. Par exemple, si vous souhaitez que tous les objets du bucket utilisent les mêmes autorisations, vous pouvez activer l'accès uniforme au niveau du bucket.
Bucket::new()
.set_project(format!("projects/{project_id}"))
.set_iam_config(
IamConfig::new()
.set_uniform_bucket_level_access(
UniformBucketLevelAccess::new()
.set_enabled(true),
),
),
Envoyez ensuite cette demande et attendez la réponse.
.send()
.await?;
println!("bucket successfully created {bucket:?}");
Importer un objet
Le client permettant d'effectuer des opérations sur les données d'objet est appelé "Storage".
use google_cloud_storage::client::Storage;
let client = Storage::builder().build().await?;
Dans ce cas, vous créez un objet appelé hello.txt avec le message d'accueil Hello World!.
let object = client
.upload_object(&bucket.name, "hello.txt", "Hello World!")
.send_buffered()
.await?;
println!("object successfully uploaded {object:?}");
Télécharger un objet
Pour télécharger le contenu d'un objet, utilisez la méthode 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)
);
Effectuer un nettoyage des ressources
Enfin, supprimez l'objet et le bucket pour nettoyer les ressources utilisées dans ce guide.
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?;