たかぎとねこの忘備録

プログラミングに関する忘備録を自分用に残しときます。マサカリ怖い。

Cloud Runにデプロイを試みた時に発生したPermission 'run.services.get' denied on resourceエラーの解決方法

GitHub Actionsからサービスアカウントを使ってCloud Runにデプロイを行なった時に次のようなエラーが発生した。

ERROR: (gcloud.run.deploy) PERMISSION_DENIED: Permission 'run.services.get' denied on resource

このエラーの内容からgcloud.run.deployの権限が付与されていないためエラーが発生しているように見えるが、このときサービスアカウントにはすでにCloud Run管理者権限が付与されている状態だった。

google cloud run - ERROR: (gcloud.run.services.update) PERMISSION_DENIED: Permission 'run.services.get' denied on resource 'namespaces/*/services/test-repo' - Stack Overflow

この場合の解決方法としては、Cloud Buildのページから設定を開く。

Cloud Run 管理者のステータスを有効に切り替える。

すべてのサービスアカウントにアクセス権を付与をクリックする。

この状態で、GitHub Actionsからもう一度デプロイを試みると解決した。

ワークフローファイルの内容は次の通り。

name: Deploy

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    needs: [test]
    if: ${{ (github.ref == 'refs/heads/main') }}

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set up JDK 11
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: 11

      - name: Make gradlew executable
        run: chmod +x ./gradlew

      - name: Setup Gradle
        uses: gradle/gradle-build-action@v2

      - id: 'auth'
        uses: 'google-github-actions/auth@v1'
        with:
          credentials_json: '${{ secrets.GCP_CREDENTIALS }}'

      - name: Set up gcloud CLI
        uses: google-github-actions/setup-gcloud@v1

      - name: Configure Docker with Credentials
        run: |
          gcloud auth configure-docker

      - name: Build the Docker Image
        run: |
          gcloud config set project ${{ secrets.GCP_PROJECT_NAME }}
          gcloud builds submit --config ./cloudbuild.yaml

参考

Cloud Build を使用した継続的デプロイの手動設定  |  Cloud Run のドキュメント  |  Google Cloud