チェックポイント
Deploy the Hello World application to App Engine
/ 10
Google Cloud の基礎: App Engine を使ってみる
概要
このラボでは、Google Cloud Shell で仮想環境を使用して、シンプルな App Engine アプリケーションを作成、デプロイします。
目標
このラボでは、次のタスクの実行方法について学びます。
-
App Engine を初期化する
-
Cloud Shell で、ローカルで実行される App Engine アプリケーションをプレビューする
-
App Engine アプリケーションをデプロイして他のユーザーがアクセスできるようにする
-
表示する必要がなくなった App Engine アプリケーションを無効にする
ラボ環境を設定する
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
-
Qwiklabs にシークレット ウィンドウでログインします。
-
ラボのアクセス時間(例:
1:15:00
)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。 -
準備ができたら、[ラボを開始] をクリックします。
-
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
-
[Google Console を開く] をクリックします。
-
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。 -
利用規約に同意し、再設定用のリソースページをスキップします。
Google Cloud Shell の有効化
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
-
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- 次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
出力:
出力例:
- 次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
タスク 1: App Engine を初期化する
-
プロジェクトで App Engine アプリを初期化し、アプリを配置するリージョンを選択します。
gcloud app create --project=$DEVSHELL_PROJECT_ID
プロンプトが表示されたら、App Engine アプリケーションを配置するリージョンを選択します。
-
hello_world ディレクトリにあるサンプル アプリケーションのソースコード リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
-
ソース ディレクトリに移動します。
cd python-docs-samples/appengine/standard_python3/hello_world
タスク 2: Hello World アプリケーションをローカルで実行する
このタスクでは、Cloud Shell のローカル仮想環境内で Hello World アプリケーションを実行します。
Cloud Shell のコマンド プロンプトを開いていることを確認します。
-
Dockerfile を作成する
touch Dockerfile
-
Dockerfile [ヒント: nano Dockerfile] を編集して、次のコンテンツを含めます。
FROM python:3.7 WORKDIR /app COPY . . RUN pip install gunicorn RUN pip install -r requirements.txt ENV PORT=8080 CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app
Dockerfile は、ローカル イメージを作成するために使用されます。 -
コンテナ イメージをビルドして、Python 仮想環境を実行します。
docker build -t test-python .
-
アプリケーションを実行します。
docker run --rm -p 8080:8080 test-python
-
Cloud Shell で、ウェブでプレビュー アイコン()> [ポート 8080 でプレビュー] をクリックしてアプリケーションをプレビューします。
ウェブでプレビュー アイコンにアクセスするには、ナビゲーション メニューを折りたたむことが必要な場合があります。
結果:
-
テストを終了するには、Cloud Shell に戻り、Ctrl+C キーを押してデプロイ済みサービスを中止します。
-
Cloud Console を使用して、アプリケーションがデプロイされていないことを確認します。Cloud Console のナビゲーション メニュー()で、[App Engine] > [ダッシュボード] をクリックします。
リソースはデプロイされていません。
タスク 3: App Engine 上で Hello World をデプロイして実行する
アプリケーションを App Engine スタンダード環境にデプロイするには:
-
ソース ディレクトリに移動します。
cd ~/python-docs-samples/appengine/standard_python3/hello_world
-
Hello World アプリケーションをデプロイします。
gcloud app deploy
「続行しますか(Y/n)?」というプロンプトが表示されたら、 Y
を押してからEnter
を押します。この app deploy コマンドでは、app.yaml ファイルを使用してプロジェクトの構成を特定します。
注意: Gaia 伝播関連のエラー メッセージが表示された場合は、 gcloud app deploy
コマンドを再実行してください。 -
ブラウザを起動して、http://[プロジェクト ID].appspot.com でアプリケーションを表示します。
gcloud app browse
URL をコピーして、新しいブラウザ ウィンドウに貼り付けます。
結果:
お疲れさまでした App Engine を使用して最初のアプリケーションを作成しました。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 4: アプリケーションを無効にする
App Engine には、アプリケーションをデプロイ解除するオプションはありません。デプロイされたアプリケーションはその後もデプロイされたままになりますが、必要に応じて、デプロイを解除する代わりにアプリケーションを「サービス停止中」などの簡単なページに置き換えることができます。
ただし、アプリケーションを無効にすることは可能です。その場合、ユーザーはアプリケーションにアクセスできなくなります。
-
Cloud Console のナビゲーション メニュー()で、[App Engine] > [設定] をクリックします。
-
[アプリケーションを無効にする] をクリックします。
-
ダイアログ メッセージを読みます。[アプリ ID] に該当するアプリ ID を入力し、[無効にする] をクリックします。
アプリケーション サイトを表示していたブラウザ ウィンドウを更新すると、404 エラーが発生します。
お疲れさまでした
App Engine を使用して最初のアプリケーションを作成しました。
ラボを終了する
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
- 星 1 つ = 非常に不満
- 星 2 つ = 不満
- 星 3 つ = どちらともいえない
- 星 4 つ = 満足
- 星 5 つ = 非常に満足
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。