使用秘密环境变量设置Firebase函数配置

时间:2019-06-26 21:04:42

标签: firebase google-cloud-functions google-cloud-build

为源自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_KEYAPI_KEY。 如果我将未加密的API_KEY添加到Google Cloud Build触发器中的环境变量中,则替换将按预期进行。

1 个答案:

答案 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>'

希望有帮助!