1. 概要
Cloud Run は、HTTP リクエストを介して呼び出し可能なステートレス コンテナを実行できるフルマネージドのサーバーレス プラットフォームです。Cloud Run はサーバーレスです。インフラストラクチャ管理が一切不要なため、最も重要な作業であるアプリケーションの構築に集中できます。
Knative をベースに構築されており、Cloud Run を使用してフルマネージドでコンテナを実行するか、Cloud Run on GKE を使用して Google Kubernetes Engine クラスタ内でコンテナを実行するかを選択できます。
学習内容
このラボでは、次の方法について学びます。
- Cloud Run アプリケーションをデプロイする
前提条件
- このラボは、Cloud コンソールと Cloud Shell 環境に精通していることを前提としています。
2. 設定と要件
Cloud プロジェクトのセットアップ
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。



- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。この設定はいつでも変更できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は
PROJECT_IDと識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。 - なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクト全体を削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
環境設定
検索バーの右にあるアイコンをクリックして、Cloud Shell をアクティブにします。

Cloud Shell で、Cloud Run API を有効にします。
gcloud services enable run.googleapis.com
承認を求められたら、[承認] をクリックして続行します。

成功すると次のようなメッセージが表示されます。
Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.
3. アプリケーションを準備する
まず、HTTP リクエストに応答するシンプルな Express ベースの Node.js アプリケーションを準備します。
Cloud Shell で、starter-nodejs という名前の新しいディレクトリを作成し、そのディレクトリに移動します。
mkdir starter-nodejs
cd starter-nodejs
次のコマンドを実行して、package.json ファイルを作成します。
cat > ./package.json << EOF
{
"name": "cloudrun-starter-app",
"version": "1.0.0",
"description": "Node.js Starter Application",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "Apache-2.0",
"dependencies": {
"express": "^4.18.2"
}
}
EOF
上記のファイルで特に重要なのは、start スクリプトのコマンドと、Express ウェブ アプリケーション フレームワークへの依存関係が含まれている点です。
次に、同じディレクトリで次のコマンドを実行して index.js ファイルを作成します。
cat > ./index.js << EOF
const express = require('express');
const app = express();
app.get('/', (req, res) => {
console.log('Received a request.');
res.send("Hello Cloud Run!");
});
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log('Listening on port', port);
});
EOF
このコードは、PORT 環境変数で定義されたポートをリッスンする基本的なウェブサーバーを作成します。これでアプリは完成しました。このアプリをコンテナ化してデプロイします。
4. Cloud Run アプリケーションをデプロイする
次のコマンドを実行して、アプリケーションをデプロイします。
gcloud run deploy starter-app \
--source . \
--region us-central1 \
--allow-unauthenticated \
--max-instances=3
Artifact Registry リポジトリの作成を確認します。
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created. Do you want to continue (Y/n)? y
前のコマンドの結果として、次の手順が実行されます。

Cloud Console で、Cloud Build、Cloud Storage、Artifact Registry、Cloud Run の各ステップの出力を確認します。

5. 完了
おめでとうございます!Cloud Run にアプリケーションをデプロイしました。
学習した内容
- Cloud Run にスターター アプリケーションをデプロイする方法
次のステップ:
Cymbal Eats の他の Codelab をご覧ください。
- Eventarc を使用して Cloud Workflows をトリガーする
- Cloud Storage からイベント処理をトリガーする
- Cloud Run からプライベート CloudSQL に接続する
- Cloud Run からフルマネージド データベースに接続する
- Identity Aware Proxy(IAP)でサーバーレス アプリケーションを保護する
- Cloud Scheduler で Cloud Run ジョブをトリガーする
- Cloud Run への安全なデプロイ
- Cloud Run 上り(内向き)トラフィックの保護
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。