m's blog

備忘録とかメモとか

【GCP】Cloud Run サービス起動用のサービスアカウントを作成する

Image from Gyazo

Cloud Pub / Sub や Tasks、Scheduler など、他の GCP サービスから Cloud Run サービスを起動したいことがあります。

そのような場合、対象サービスの起動権限をもったサービスアカウントが必要になります。

今回は、Cloud Run サービス起動用のサービスアカウント の作成について解説していきたいと思います!

目次

サービスアカウントを作成

まずは、Cloud Run サービスの起動に使用するサービスアカウントを作成 します。

以下のコマンドを実行して、サービスアカウントを作成してください。

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
    --display-name $DISPLAY_NAME

ここで、$SERVICE_ACCOUNT_NAME には、サービスアカウント名 を設定してください。 ( 例 : test-invoker など )

$DISPLAY_NAME には、サービスアカウントの表示名 を設定してください。 ( 例 : Test Invoker など )

Cloud Run サービスの呼び出し権限を付与

次に、作成したサービスアカウントに、対象の Cloud Run サービスの呼び出し権限を付与 します!

以下のコマンドにより、作成したサービスアカウントに呼び出し権限を追加してください。

gcloud run services add-iam-policy-binding $SERVICE_NAME \
    --member=serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com \
    --role=roles/run.invoker

ここで、$SERVICE_NAME には、呼び出し対象となる Cloud Run サービスの名前 を設定してください。

$SERVICE_ACCOUNT_NAME は、先ほど作成したサービスアカウントの名前です。特に変更は必要ありません。

$PROJECT_ID には、Google Cloud のプロジェクト ID を設定してください。

設定の確認

追加したアカウントのチェック

まずは、追加したアカウントを確認します。

GCP のコンソールページから、IAM と管理 > サービスアカウントを開いてください。

追加したアカウントがリストにあるか、確認してください。

追加されたアカウントは、以下のようなフォーマットになっていると思います。

${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

「メール」や「名前」の項目が設定した通りであれば、サービスアカウントの追加は成功です!

付与した権限のチェック

次に、作成したサービスアカウントに、対象サービスの起動権限が付与されているか確認します。

Cloud Run のコンソールページから、呼び出し対象としたサービスを探して、サービスのリンクをクリックしてください。

サービスページが開いたら、「権限」タブをクリックしてください。

今回追加したサービスアカウントがあるか、確認してください。

「ロール」の項目に「Cloud Run 起動元」と表示されていれば、権限の付与も成功です!

まとめ

今回は、Cloud Run サービス起動用のサービスアカウントの作成について解説してみました!

サービスアカウントの作成と権限の付与は、多少面倒ではありますが、慣れてしまえば、それほど難しくありません。

GCP のサービスを利用する中で、サービスアカウントを利用する場面は多いので、慣れておいて損はないと思います。

ぜひ一度、試してみてください!