Вы совершенно правы, Cloud Shell работает на эфемерном экземпляре, который сбрасывается через несколько минут после завершения сеанса, причина, по которой вы теряете содержимое переменной среды, о которой вы упоминали.
Документация о ограничения в Cloud Shell четко указывают, что он предназначен только для интерактивного использования, и любой неинтерактивный сеанс или интенсивное использование может быть автоматически прекращено с (или без) предупреждением.
Следовательно, иИсходя из вашего вопроса, что у вас есть фоновый скрипт, который работает с Cloud Natural Language , я настоятельно рекомендую вам перейти к «реальному» экземпляру Compute Engine , в котором выбудет иметь гораздо больший контроль над тем, что происходит.Это обеспечит большую гибкость, и вы сможете использовать более крупный тип компьютера, учитывая, что Cloud Shell работает на g1-small GCE экземпляре , что, как правило, недостаточно длязапустить приложение.Также, в зависимости от вашего варианта использования, вы можете даже рассмотреть App Engine .
При этом я обнаружил, что при создании экземпляра LanguageClient
вы также можете не использовать Application DefaultУчетные данные и вместо этого используйте переменные keyFile
или keyFilePath
(объяснено в справочник по клиентской библиотеке PHP ), чтобы передать путь к ключу JSON непосредственно к вашему коду вместо чтения его из средыпеременная.