Utiliser Cloud Storage

Vous pouvez utiliser Cloud Storage pour stocker et diffuser des fichiers, tels que des films, des images ou d'autres contenus statiques.

Ce document explique comment utiliser la bibliothèque cliente Google Cloud dans votre application afin de stocker et de récupérer des données dans Cloud Storage.

Avant de commencer

  • Suivez les instructions de la section "Hello, World!" pour Ruby sur App Engine afin de configurer votre environnement et votre projet, et pour comprendre la structure des applications Ruby dans App Engine. Notez et enregistrez l'ID de votre projet. Vous en aurez besoin pour exécuter l'exemple d'application décrit dans ce document.

  • Veillez à créer un bucket Cloud Storage pour votre application en appelant la commande suivante :

    gsutil mb gs://[YOUR_BUCKET_NAME]
    
  • Rendez le bucket lisible publiquement afin qu'il puisse diffuser des fichiers :

    gsutil defacl set public-read gs://[YOUR_BUCKET_NAME]
    

Télécharger l'exemple

Pour cloner le dépôt, exécutez :

git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples/
cd ruby-docs-samples/appengine/storage

Modifier la configuration du projet et installer les dépendances

Dans le fichier app.yaml, définissez GCLOUD_STORAGE_BUCKET sur le bucket Cloud Storage que vous avez précédemment créé pour votre projet.

runtime: ruby
env: flex
entrypoint: bundle exec ruby app.rb

env_variables:
  GOOGLE_CLOUD_STORAGE_BUCKET: <your-bucket-name>

Notez que vous devez inclure la bibliothèque gcloud dans le fichier Gemfile pour utiliser les fonctions Cloud Storage.

source "https://rubygems.org"

gem "google-cloud-storage"
gem "sinatra"

Code de l'application

L'exemple d'application présente une page Web invitant l'utilisateur à indiquer un fichier à stocker dans Cloud Storage. Lorsque l'utilisateur sélectionne un fichier et clique sur "Envoyer", le gestionnaire d'importation charge le contenu du fichier dans un blob et l'écrit dans Cloud Storage.

Notez qu'après le transfert du fichier dans Cloud Storage, l'URL publique de ce fichier est renvoyée. Vous pouvez l'utiliser pour diffuser le fichier directement à partir de Cloud Storage. Vous devez stocker cette valeur dans votre application pour une utilisation ultérieure.

require "sinatra"
require "google/cloud/storage"

storage = Google::Cloud::Storage.new
bucket  = storage.bucket ENV["GOOGLE_CLOUD_STORAGE_BUCKET"]

get "/" do
  # Present the user with an upload form
  '
    <form method="POST" action="/upload" enctype="multipart/form-data">
      <input type="file" name="file">
      <input type="submit" value="Upload">
    </form>
  '
end

post "/upload" do
  file_path = params[:file][:tempfile].path
  file_name = params[:file][:filename]

  # Upload file to Google Cloud Storage bucket
  file = bucket.create_file file_path, file_name, acl: "public"

  # The public URL can be used to directly access the uploaded file via HTTP
  file.public_url
end

Pour en savoir plus

Pour obtenir des informations complètes sur Cloud Storage, consultez la documentation Cloud Storage.