为源自Google kms的Firebase函数设置环境变量的推荐方法是什么?
在我的cloudbuild.yaml中,执行以下步骤:
# Set env
- name: 'gcr.io/$_PROJECT_ID/firebase'
args: ['functions:config:set', 'env.environment=$_ENV', 'env.build=$BUILD_ID','api_key=$API_KEY', '--project', '$_PROJECT_ID']
dir: 'functions'
secretEnv: ['API_KEY','FIREBASE_TOKEN']
对于自定义Google Cloud Builder,我遵循了 按照https://github.com/GoogleCloudPlatform/cloud-builders-community/
中的说明进行操作cloudbuild.yaml无效或替换无效。
编辑:
错误消息
ERROR: (gcloud.builds.submit) INVALID_ARGUMENT: invalid build: key in the template "API_KEY" is not a valid built-in substitution
如果我通过firebase functions:config:get
检索firebase环境,则根据选择的替换策略,我看到$API_KEY
或$$API_KEY
或API_KEY
。
如果我将未加密的API_KEY添加到Google Cloud Build触发器中的环境变量中,则替换将按预期进行。
答案 0 :(得分:0)
我一直像您一样遵循github指令链接:
https://github.com/GoogleCloudPlatform/cloud-builders-community/
对我来说很好。只是为了确认您没有错过任何步骤,您是否重复了创建firebase令牌并将其应用于API_KEY所需的相同步骤?
#### create a key for the api token
gcloud kms keys create api-token --location global --keyring cloudbuilder --purpose encryption
#### create the encrypted token
echo -n $API_TOKEN | gcloud kms encrypt \
--plaintext-file=- \
--ciphertext-file=- \
--location=global \
--keyring=cloudbuilder \
--key=api-token | base64
我还必须向cloudbuild.yaml添加另一个秘密:
Secrets:
- kmsKeyName: 'projects/[PROJECT_ID]/locations/global/keyRings/cloudbuilder/cryptoKeys/firebase-token'
secretEnv:
FIREBASE_TOKEN: '<YOUR_ENCRYPTED_TOKEN>'
- kmsKeyName: 'projects/[PROJECT_ID]/locations/global/keyRings/cloudbuilder/cryptoKeys/api-token'
secretEnv:
API_TOKEN: '<YOUR_ENCRYPTED_TOKEN>'
希望有帮助!