У нас есть рабочая команда gcloud deploy, в которую мы пытаемся добавить новую переменную окружения. В настоящее время рабочий пример выглядит следующим образом:
gcloud functions deploy ftn_handler --set-env-vars APP_PROJECT_ID=my-project-id,CLOUD_STORAGE_BUCKET=my_bucket_name,ENVIRONMENT=development --runtime python37 --memory=1024MB --trigger-resource my_project.appspot.com --trigger-event google.storage.object.finalize
Теперь переменная env, которую мы хотим добавить, представляет собой простой список, например: MY_LIST = ['val1', 'val2'], поэтому сначала мы попробовали очевидное:
gcloud functions deploy ftn_handler --set-env-vars APP_PROJECT_ID=my-project-id,CLOUD_STORAGE_BUCKET=my_bucket_name,ENVIRONMENT=development,MY_LIST=['val1', 'val2'] --runtime python37 --memory=1024MB --trigger-resource my_project.appspot.com --trigger-event google.storage.object.finalize
, но немедленно вернул ошибку:
(gcloud.functions.deploy) нераспознанные аргументы: val2]
Итак мы начали искать экранирование значений, как указано в этой статье
Исходя из этой статьи, мы подумали, что следующее может работать
gcloud functions deploy ftn_handler --set-env-vars APP_PROJECT_ID=my-project-id,CLOUD_STORAGE_BUCKET=my_bucket_name,ENVIRONMENT=development,MY_LIST=^,^val1,val2 --runtime python37 --memory=1024MB --trigger-resource my_project.appspot.com --trigger-event google.storage.object.finalize
, но мы все еще получаем ошибку :
(gcloud.functions.deploy) аргумент --set-env-vars: неверный синтаксис для dict arg: [^ val1]
Мы попробовали число вариаций с использованием экранирующей синты c, но все они закончились какой-то ошибкой. Есть какие-нибудь идеи по поводу правильного синтаксиса или если такое вообще возможно с --set-env-vars?