
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a bucket
/ 50
Upload objects to your bucket
/ 50
Cloud Storage では、世界中のどこからでも、いつでもデータを保存、取得できます。データの量に制限はありません。ウェブサイト コンテンツの提供、アーカイブと障害復旧のためのデータの保存、直接ダウンロードによるユーザーへの大きなデータ オブジェクトの配布など、さまざまなシナリオで Cloud Storage を使用できます。
このラボでは、Cloud Storage を使用してアプリケーション データを保存、取得するようにアプリケーションを構成します。使用するアプリケーションはオンライン クイズ アプリケーション、使用するデータはそのフォームデータです。フォームに含める画像をローカルマシンからアップロードします。
このラボでは、次のタスクの実行方法について学びます。
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] パネルでも [ユーザー名] を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] パネルでも [パスワード] を確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
[承認] をクリックします。
出力は次のようになります。
出力:
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
YOUR-PROJECT-ID
は実際のプロジェクト ID に置き換えます。このセクションでは、Cloud Shell にアクセスしてクイズ アプリケーションを含む git リポジトリのクローンを作成し、アプリケーションを実行します。
作業ディレクトリを変更します。
アプリケーションを構成します。
このスクリプト ファイルを実行すると、以下の処理が行われます。
GCLOUD_PROJECT
をエクスポートする。pip install -r requirements.txt
を実行する。アプリケーションを実行します。
アプリケーションの実行が開始されると、次のような出力が表示されます。
[ウェブでプレビュー] アイコン > [ポート 8080 でプレビュー] をクリックして、アプリケーションをプレビューします。
ツールバーの [Create Question] をクリックします。
シンプルなフォームが表示されます。このフォームには、質問と解答用のテキストボックスと、正解を選択するためのラジオボタンが含まれています。
このセクションでは、このケーススタディ用アプリケーションのコードを確認します。
このラボでは、ファイルの閲覧と編集を行います。Cloud Shell にインストールされている nano
や vim
などの shell エディタや、Cloud Shell コードエディタを使用できます。
このラボでは、Cloud Shell コードエディタを使用してこのクイズ アプリケーションのコードを確認します。
エディタの左側にあるファイル ブラウザ パネルを使用して、/training-data-analyst/courses/developingapps/python/cloudstorage/start
フォルダに移動します。
...quiz/webapp/templates/
フォルダにある add.html
ファイルを選択します。
このファイルには、Create Question フォームのテンプレートが含まれています。
フォームが変更されていることに注意してください。enc-type
に multipart/form-data
が使用され、次の 2 つのフォーム コントロールが追加されています。
image
: ファイル アップロード用コントロールimageUrl
: 非表示項目...quiz/webapp
フォルダにある routes.py
ファイルを選択します。
このファイルには、フォームデータを受け取る POST ハンドラのルートが含まれています。フォームから画像ファイルを取得するように変更されています。
...quiz/webapp
フォルダにある questions.py
ファイルを選択します。
このファイルには、routes.py
ファイルで抽出されたフォームデータを処理するハンドラが含まれています。Cloud Storage のクライアントである新しいモジュールを使用できるように、このファイルを変更します。
...quiz/gcp/storage.py
ファイルを選択します。
このファイルに、画像ファイルのデータを Cloud Storage に保存するためのコードを記述します。
このセクションでは、Cloud Storage バケットを作成し、それを参照する環境変数をエクスポートします。
Cloud Shell コマンドラインに戻ります。
Ctrl+C キーを押してアプリケーションを停止します。
<プロジェクト ID>-media
という名前の Cloud Storage バケットを作成します。
バケットを作成するには gsutil mb コマンドを使用します。バケットの名前として gs://BUCKET_NAME を渡します。
接頭辞 $DEVSHELL_PROJECT_ID に -media を付けたバケット名を使用します。
次のコマンドを実行して、Cloud Storage バケット名を GCLOUD_BUCKET
という名前の環境変数としてエクスポートします。
このセクションでは、アップロードされたファイルを Cloud Storage に保存するためのコードを記述します。
Cloud Storage の API ドキュメントについて詳しくは、API とリファレンスをご覧ください。
...quiz/gcp/storage.py
ファイルの先頭に移動します。GCLOUD_BUCKET
環境変数からバケット名を取得します。google.client
パッケージから storage モジュールをインポートします。quiz/gcp/storage.py
storage.py
で、upload_file(...)
関数の既存の pass ステートメントを削除してから、Cloud Storage クライアントを使用して、Cloud Storage バケットにファイルをアップロードして公開します。quiz/gcp/storage.py - upload)file(...)
関数
storage.py
を保存します。...quiz/webapp/questions.py
ファイルの先頭に移動します。upload_file(...)
関数に移動します。storage クライアントを使用してファイルをアップロードし、返された公開 URL を変数に代入します。save_question(...)
関数に移動します。image_file
が存在するかどうかを確認する if テストを記述します。upload_file(...)
関数を呼び出して、imageUrl という名前のエンティティ プロパティに公開 URL を割り当てます。quiz/webapp/questions.py
questions.py
を保存します。...gcp/storage.py
ファイルと ...webapp/questions.py
ファイルを保存してから、Cloud Shell コマンドに戻ります。Google のストレージから画像ファイルをローカルマシンにダウンロードします。
Cloud Shell で [ウェブでプレビュー] アイコン > [ポート 8080 でプレビュー] をクリックして、クイズ アプリケーションをプレビューします。
[Create Question] をクリックします。
フォームに次の値を入力して、[Save] をクリックします。
フォームの項目 | 値 |
---|---|
Author | 自分の名前 |
Quiz | Google Cloud Platform |
Title | Which product does this logo relate to? |
Image | 先ほどダウンロードした Google_Cloud_Storage_logo.png ファイルをアップロード |
Answer 1 | App Engine |
Answer 2 |
Cloud Storage ([Answer 2] のラジオボタンを選択します) |
Answer 3 | Compute Engine |
Answer 4 | Container Engine |
Google Cloud コンソールに戻り、ナビゲーション メニュー > [Cloud Storage] に移動します。
[Cloud Storage] > [ブラウザ] ページで、適切なバケット(<プロジェクト ID>-media
という名前)をクリックします。
Google_Cloud_Storage_logo.png
という名前の新しいオブジェクトが表示されます。
アプリケーションの URL の末尾に /api/quizzes/gcp
を追加します。
先ほどこのウェブ アプリケーションに追加した質問に対応する JSON データがクライアントに返されるはずです。
imageUrl プロパティには、Cloud Storage のオブジェクトに対応する値が含まれています。
アプリケーションのホームページに戻り、[Take Test] リンクをクリックします。
[GCP] をクリックし、各質問に答えます。
先ほど追加した質問まで進むと、クライアント側ウェブ アプリケーションに画像が表示されます。
ラボ「アプリ開発: Cloud Storage への画像ファイルと動画ファイルの保存 - Python」はこれで終了です。Cloud Storage を使ってアプリケーション データの保存と取り出しを行いました。
このセルフペース ラボは、「Application Development - Python」クエストおよび「Cloud Development」クエストの一部です。クエストとは学習パスを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、このラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なすべてのクエストについては、Google Cloud Skills Boost カタログをご覧ください。
画像や動画で他にどのようなことができるか確認します。
詳しくは「Google Cloud 上の Python」をご覧ください
Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
One lab at a time
Confirm to end all existing labs and start this one