Google Cloud Run ローカルから操作してみる

Google Cloud Run ローカルから操作してみる

前記事「Google Cloud 初歩の初歩」から Google Cloud を始めました。タイトル通りの初歩の初歩状態で、Google Cloud コンソールから Cloud Run のサンプルコンテナを試しただけです。

次はローカルからデプロイしてみます。

01ドキュメント自体が難しい…

前記事で試した内容は結局ドキュメントのガイドに記載されていました。ただ初心者にはドキュメント自体もハードルが高いです。知らない単語にはリンクはありますが、そのリンクをたどっていきますとさらにわからない単語に出会うという底なし沼のようです(笑)。自分がどこにいるのか分からなくなります。

前記事の内容はドキュメントの中のガイド「Cloud Run にデプロイする」にありました。今回は同じガイド内にある「ソースコードから Hello World サービスをデプロイする」のうち、

をローカルの Google Cloud CLI(gcloud)を使ってやってみます。

gcloud CLI インストール

まず、gcloud CLI のインストールですが、次のリンク先に従えば問題なくできます。

プロジェクト作成、選択

続いて、新しくプロジェクトを作成するか、すでにあるプロジェクトを選択します。新しく作成する場合は、

$ gcloud projects create PROJECT_ID

既存のプロジェクトを使う場合は、

$ gcloud config set project PROJECT_ID

です。

すでにある My First Project を選択してみます。

タグをつけてくださいと出ています。

メニューの IAM と管理 > タグ にあります。プロジェクトの管理のためですので今の段階では必要ないでしょう。

必要な API の有効化、アクセス権

$ gcloud services enable run.googleapis.com cloudbuild.googleapis.com

Cloud Run Admin API と Cloud Build API を有効にします。返ってきた operations/acat.p2-xxx… は

Google Cloud Platform(GCP)において、APIの有効化やリソース(Cloud Run、AlloyDB、Cloud Buildなど)のデプロイ作業が正常に完了したことを示す、非同期操作(Operation)のID
(Gemini)

だそうです。現時点では公開していいものかどうかもわかりませんのでマスクしておきます。英数字の羅列です。Cloud Build は多分デプロイするのに必要なんでしょう(未確認…)。

$ gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:SERVICE_ACCOUNT_EMAIL_ADDRESS \
    --role=roles/run.builder

Cloud Build サービス アカウントにプロジェクトへのアクセス権を付与するコマンドです。SERVICE_ACCOUNT_EMAIL_ADDRESS は、Cloud Build サービス アカウントのメールアドレスというもので、

PROJECT_NUMBER-compute@developer.gserviceaccount.com

との形式を取るものだそうです。PROJECT_NUMBER というのは

の設定をクリックしますと表示される12桁の数字で表されるプロジェクト番号です。

やってみますと、run.builder だけではなく、必要なものに権限が与えられるということじゃないかと思います。とにかく先に進んでみます。

デプロイ

次はローカルでデプロイするための Python アプリを作成します。適当なディレクトリ(helloworld)を作成し、main.py と requirements.txt を作成します。

これで Cloud Run にデプロイするわけですが、コンテナにしてなくていいのかなと思いましたら、−−source オプションをつけてデプロイすれば自動的にコンテナイメージを作ってくれるようです。

$ gcloud run deploy --source .

リージョンに asia−northeast1(東京)[4] を選びますと、unauthenticated invocations(未認証の呼び出し、つまり公開アクセス)を許可するかを聞いてきます。No がデフォルトになっていますのでそのままエンターを押せば非公開アクセスになり認証が必要になります。No で進んでみます。Yes で進めば公開アクセスになります。

デプロイが完了し、アクセス URL が表示されています。URL の一部にプロジェクト番号が使われていますのでマスクする必要はなかったみたいです。

02それでもなんとなくわかってくる…

指定された URL にアクセスしてみます。

当然、認証が必要になっていますので URL アドレスを叩いただけでは 403 Forbidden になります。

前記事の「IAM 認証を試す」に従って認証トークンを付加してアクセスしますと Hello World! が返ってきます。パラメータとして name に imuza と与えれば Hello imuza! となります。

成功を確認したらサービスを削除しておきます。

$ gcloud run services delete SERVICE --region REGION

ということで、実際にやってみますとなんとなくわかってきます。