クイックスタート: 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
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
ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。
-
Enable the Cloud Run Admin API and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.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=user: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。これは通常、Cloud Run リソースをデプロイするメールアドレスです。
- 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 helloworldmain.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(ベルリン)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 は、次のリージョンで利用できます。
Tier 1 料金を適用
Tier 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 する方法については、以下をご覧ください。