クイックスタート: Python(Flask)ウェブアプリをビルドして Cloud Run にデプロイする
Cloud Run を使用し、1 つのコマンドでコードサンプルから「Hello World」ウェブ アプリケーションをビルドして Google Cloudにデプロイする方法を学習します。
このクイックスタートの手順に沿って、ソースコードからデプロイすると、Cloud Run によって Dockerfile が自動的にビルドされます。Python Buildpack が Cloud Run ソースデプロイのデフォルトのエントリ ポイントを決定する方法の詳細については、Python アプリケーションのビルドに関する説明をご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
[IAM] に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
Install the Google Cloud CLI.
外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
[IAM] に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
Install the Google Cloud CLI.
外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
-
- Cloud Run サービスのデフォルト プロジェクトを設定するには、次のコマンドを実行します。
PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。gcloud config set project PROJECT_ID
ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。
Cloud Run Admin API と Cloud Build API を有効にします。
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Cloud Run Admin API を有効にすると、Compute Engine のデフォルトのサービス アカウントが自動的に作成されます。
-
サービス ID にサービス アカウント ユーザーのロールが付与されていることを確認します。デフォルトでは、サービス ID は Compute Engine のデフォルトのサービス アカウントです。
ロールを付与する
サービス ID リソースに対するアクセス権を付与するには、
gcloud iam service-accounts add-iam-policy-binding
コマンドを使用します。ハイライト表示された変数は、適切な値に置き換えてください。gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="PRINCIPAL" \ --role="roles/iam.serviceAccountUser"
次のように置き換えます。
- SERVICE_ACCOUNT_EMAIL: サービス ID として使用しているサービス アカウントのメールアドレス。たとえば次のようなものです。
- Compute Engine のデフォルトのサービス アカウント:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- 作成したサービス アカウント:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
- Compute Engine のデフォルトのサービス アカウント:
- PRINCIPAL: ユーザー ID。通常は、Google アカウントのメールアドレスです。
- SERVICE_ACCOUNT_EMAIL: サービス ID として使用しているサービス アカウントのメールアドレス。たとえば次のようなものです。
- Cloud Build サービス アカウントに次の IAM ロールを付与します。
クリックして Cloud Build サービス アカウントに必要なロールを表示
この動作をオーバーライドしない限り、Cloud Build は、ソースコードと Cloud Run リソースのビルドにデフォルトの Cloud Build サービス アカウントとして Compute Engine のデフォルトのサービス アカウントを自動的に使用します。Cloud Build がソースをビルドできるようにするには、プロジェクトの Compute Engine のデフォルトのサービス アカウントに Cloud Run ビルダー(
roles/run.builder
)を付与するよう管理者に依頼します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
PROJECT_NUMBER
は Google Cloudプロジェクト番号に、PROJECT_ID
は Google Cloudプロジェクト ID に置き換えます。プロジェクト ID とプロジェクト番号を確認する方法については、プロジェクトの作成と管理をご覧ください。Compute Engine のデフォルト サービス アカウントに Cloud Run ビルダーのロールを付与すると、反映されるまでに数分かかることがあります。
- Cloud Run の料金を確認するか、料金計算ツールで費用を見積もります。
helloworld
という名前の新しいディレクトリを作成し、そのディレクトリに移動します。mkdir helloworld cd helloworld
main.py
という名前のファイルを作成し、次のコードを貼り付けます。このコードは、「Hello World」という応答メッセージでリクエストに応答します。HTTP 処理は、コンテナ内の Gunicorn ウェブサーバーによって行われます。ローカルで使用するために直接呼び出された場合、このコードは
PORT
環境変数で定義されたポートをリッスンする基本的なウェブサーバーを作成します。requirements.txt
という名前のファイルを作成し、次のコードを貼り付けます。このコードにより、サンプルで必要なパッケージが追加されます。
ソースコード ディレクトリで、次のコマンドを使用して現在のフォルダをデプロイします。
gcloud run deploy --source .
サービス名の入力を求められたら、Enter キーを押して、デフォルトの名前(
helloworld
など)を受け入れます。プロジェクトで追加の API(Artifact Registry API など)を有効にするよう求められたら、
y
を押して応答します。リージョンの入力を求められたら、任意のリージョン(
europe-west1
など)を選択します。指定したリージョンにリポジトリを作成するように求められたら、
y
を押して応答します。一般公開アクセスを許可するように求められた場合は、「
y
」と応答します。ドメイン制限の組織のポリシーが原因でこのメッセージが表示されない場合があります。詳細については、始める前にのセクションをご覧ください。
デプロイが完了するまで少しお待ちください。正常に完了すると、コマンドラインにサービス URL が表示されます。
このサービス URL をウェブブラウザで開き、デプロイしたコンテナにアクセスします。
asia-east1
(台湾)asia-northeast1
(東京)asia-northeast2
(大阪)asia-south1
(ムンバイ、インド)europe-north1
(フィンランド)低 CO2
europe-north2
(ストックホルム)低 CO2
europe-southwest1
(マドリッド)低 CO2
europe-west1
(ベルギー)低 CO2
europe-west4
(オランダ)低 CO2
europe-west8
(ミラノ)europe-west9
(パリ)低 CO2
me-west1
(テルアビブ)northamerica-south1
(メキシコ)us-central1
(アイオワ)低 CO2
us-east1
(サウスカロライナ)us-east4
(北バージニア)us-east5
(コロンバス)us-south1
(ダラス)低 CO2
us-west1
(オレゴン)低 CO2
africa-south1
(ヨハネスブルグ)asia-east2
(香港)asia-northeast3
(ソウル、韓国)asia-southeast1
(シンガポール)asia-southeast2
(ジャカルタ)asia-south2
(デリー、インド)australia-southeast1
(シドニー)australia-southeast2
(メルボルン)europe-central2
(ワルシャワ、ポーランド)europe-west10
(ベルリン)低 CO2
europe-west12
(トリノ)europe-west2
(ロンドン、イギリス)低 CO2
europe-west3
(フランクフルト、ドイツ)europe-west6
(チューリッヒ、スイス)低 CO2
me-central1
(ドーハ)me-central2
(ダンマーム)northamerica-northeast1
(モントリオール)低 CO2
northamerica-northeast2
(トロント)低 CO2
southamerica-east1
(サンパウロ、ブラジル)低 CO2
southamerica-west1
(サンティアゴ、チリ)低 CO2
us-west2
(ロサンゼルス)us-west3
(ソルトレイクシティ)us-west4
(ラスベガス)Google Cloud コンソールで Cloud Run に移動します。
削除するサービスをサービスリストで探し、そのチェックボックスをクリックして選択します。
[削除] をクリックします。これにより、サービスのすべてのリビジョンが削除されます。
- SERVICE: 実際のサービスの名前。
- REGION: サービスの Google Cloud リージョン。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
サンプル アプリケーションを作成する
Python でアプリケーションを作成するには:
これでアプリが完成し、デプロイできるようになりました。
ソースから Cloud Run にデプロイする
重要: 以下の説明では、このクイックスタートで使用するプロジェクトのオーナーロールまたは編集者ロールが付与されていることを前提としています。ロールが付与されていない場合は、Cloud Run ソース デベロッパー ロールで、ソースから Cloud Run リソースをデプロイするために必要な権限を確認してください。
ソースからのデプロイでは、ソースコードからコンテナ イメージが自動的にビルドされて、デプロイされます。
ソースからデプロイするには:
Cloud Run のロケーション
Cloud Run はリージョナルです。つまり、Cloud Run サービスを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google によって管理されます。
レイテンシ、可用性、耐久性の要件を満たしていることが、Cloud Run サービスを実行するリージョンを選択する際の主な判断材料になります。一般的には、ユーザーに最も近いリージョンを選択できますが、Cloud Run サービスで使用されている他の Google Cloudプロダクトのロケーションも考慮する必要があります。 Google Cloud プロダクトを複数のロケーションで使用すると、サービスのレイテンシだけでなく、コストにも影響を及ぼす可能性があります。
Cloud Run は、次のリージョンで利用できます。
ティア 1 料金を適用
ティア 2 料金を適用
Cloud Run サービスをすでに作成している場合は、Google Cloud コンソールの Cloud Run ダッシュボードにリージョンが表示されます。
クリーンアップ
Google Cloud アカウントに追加料金が課されるのを回避するには、このクイックスタートでデプロイしたリソースをすべて削除します。
リポジトリを削除する
デプロイしたサービスが使用されていない場合、Cloud Run の料金は発生しません。ただし、コンテナ イメージを Artifact Registry に保存した場合にも料金が発生する場合があります。Artifact Registry リポジトリを削除するには、Artifact Registry ドキュメントのリポジトリを削除するの手順を行います。
サービスを削除する
Cloud Run サービスの費用は、リクエストを受け取るまでは発生しません。 Cloud Run サービスを削除するには、次のいずれかの手順を行います。
コンソール
サービスを削除するには:
gcloud
サービスを削除するには、次のコマンドを実行します。
gcloud run services delete SERVICE --region REGION
次のように置き換えます。
テスト プロジェクトを削除する
Google Cloud プロジェクトを削除すると、そのプロジェクト内のすべてのリソースに対する課金が停止します。プロジェクト内のすべての Google Cloud リソースを解放する手順は次のとおりです。
次のステップ
コードソースからコンテナをビルドし、リポジトリに push する方法については、以下をご覧ください。