GCP gcloud deploy - экранирование переменных среды - PullRequest
1 голос
/ 13 февраля 2020

У нас есть рабочая команда 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?

1 Ответ

1 голос
/ 14 февраля 2020

Поскольку вы используете python, и вы хотите, чтобы перечисленные значения были указаны в качестве переменной среды, я нашел полезный ответ , где создается переменная LIST_ITEMS, а затем разбивается на код python ,

Я повторил это и могу подтвердить, что вы можете добавить переменную с помощью команды gcloud:

gcloud functions deploy Your_Function --runtime python37 --set-env-vars LIST="a.1 b.2 c.3" --trigger-http
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...