GCFをデプロイするGCPプロジェクトのセットアップ

毎回やって毎回引っかかってる気がするのでメモ。本当はTerraformとか使った方が良いんだろうけど。 とりあえず最低限必要なもの、

前提

TypeScript で GCF を作って cloudbuild.yaml を読ませてデプロイする

プロジェクトの作成

  • プロジェクトを作る
  • 課金アカウントをリンクする
  • プロジェクトのリポジトリにcloudbuild.yamlを作っておく。
steps:
  - name: node
    entrypoint: npm
    args:
      - install
  - name: node
    entrypoint: npm
    args:
      - run
      - build
  - name: gcr.io/google.com/cloudsdktool/cloud-sdk
    entrypoint: gcloud
    args:
      - functions
      - deploy
      - ...
      - --entry-point=...
      - --runtime=nodejs12
      - --trigger-...=...
      - --project=$PROJECT_ID

APIの有効化

  • Cloud Build API (Cloud Build の画面開いたときに付く)
  • Cloud Functions API
  • Cloud Resource Manager API

サービスアカウントに権限付与

IAM で@cloudbuild.gserviceaccount.comに以下の権限を付与

  • Cloud Functions 開発者
  • サービスアカウントユーザー

Cloud Build にリポジトリを接続

Cloud Build の設定画面でトリガーを作成。