発生したエラー
cloudfunctionsをcloudbuildでデプロイしようとしていました
ERROR: (gcloud.functions.deploy) unrecognized arguments: --set-env-vars PROJECT_ID=your-project-id,SECRET_ID=your-secret (did you mean '--set-env-vars'?)
原因
set-env-vars
の構文ミスだった
解決策
正しい構文
--set-env-vars=PROJECT_ID=$PROJECT_ID
間違っていたやつ
- 普通のデプロイは以下のようにスペースを空けるので気がつかなかった
--set-env-vars PROJECT_ID=$PROJECT_ID
今回作成したcloudbuild.yamlと叩いたコマンド
- コマンド
gcloud builds submit --config=cloudbuild.yaml --substitutions=_SECRET_ID=your-secret
- yamlファイル
steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
args:
- gcloud
- functions
- deploy
- YourFunction
- --source=.
- --region=${_REGION}
- --trigger-http
- --runtime=go121
- --allow-unauthenticated
- --set-env-vars=PROJECT_NUMBER=$PROJECT_NUMBER
- --set-env-vars=_SECRET_ID=$_SECRET_ID
substitutions:
_REGION: asia-northeast1
_SECRET_ID: default-secret-id
options:
env:
- 'PROJECT_NUMBER=$PROJECT_NUMBER'
**追記
-gen2
オプションをつけると下記のエラーが表示されます
ERROR: (gcloud.functions.deploy) ResponseError: status=[403], code=[Ok], message=[Permission 'run.services.setIamPolicy' denied on resource ...
エラー解消法
IAMからサービスアカウントに対して、CloudFunctionsのロールを付与してください
参考