Подключите облачное хранилище к облачной функции - PullRequest
1 голос
/ 08 января 2020

У меня проблемы с выполнением облачной функции на GCP, которая пытается обновить мои листы Google. Я получил этот скрипт, работающий в Jupyter, но изо всех сил пытался развернуть его практически как облачную функцию. Похоже, моя проблема заключается в том, что я разрешаю CF публиковать на листах Google.

Я пробовал много вещей в течение 6+ часов, большинство вопросов по stackoverflow, средние статьи на github, но не смог найти работающего решения. для меня. Я не думаю, что это проблемы ролей / разрешений. Я понимаю, как некоторые из них могут работать, когда вы находитесь вне облачных функций, но не внутри них.

В конечном счете, я думаю, что из всего, что я видел, лучший способ - разместить мой секретный ключ JSON внутри ведро хранения и позвони, я попробовал это безуспешно, и это кажется несколько запутанным, поскольку все из службы Google.

Я честно вернулся к своему оригинальному коду, поэтому я вернулся к Первая ошибка, которая заключается просто в том, что мой ключ JSON не может быть найден, так как когда я запускал его в Jupyter, он находился в том же каталоге ... поэтому я создал хранилище Google, чтобы попытаться сослаться на него. *

ОШИБКА: файл "/env/local/lib/python3.7/site-packages/oauth2client/service_account.py", строка 219, в from_json_keyfile_name с открытым (имя файла, 'r') как file_obj: FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'my-key-name. json'

Большое спасибо за любые рекомендации и поддержку по этому вопросу. Я внимательно посмотрел и попытался решить это самостоятельно. РЕДАКТИРОВАТЬ: Пожалуйста, имейте в виду, что это не файл .py, живущий в каталоге, это часть моей проблемы, насколько я могу судить, я не знаю, где ссылаться на него как на изолированную «облачную функцию».

Некоторые ссылки, на которые я смотрел в своих 20+ попытках решить эту проблему, просто назвать несколько:

Как я могу получить доступ к Google Cloud Storage с помощью доступа и секретный ключ

Доступ к хранилищу облачного хранилища Google из облачных функций выдает 500 ошибок

https://cloud.google.com/docs/authentication/getting-started#auth -cloud-implicit- python

https://cloud.google.com/docs/authentication/getting-started#setting_the_environment_variable

ОБНОВЛЕНИЕ: Я понял, что вы можете загрузить ZIP-файл своих файлов, чтобы показать три файла в встроенном редакторе. Сначала я этим не занимался, поэтому не мог понять, куда поставить ключ JSON. Теперь у меня есть его для просмотра и нужно выяснить, как вызвать его в методе.

enter image description here

Когда я выполняю тестовый прогон CF, я получаю неописанную ошибку, которая не отображается в журналах и может ' проверить это из Cloud Schedular, как я мог раньше. Я обнаружил это при переполнении стека и чувствую, что мне сейчас нужна та же версия, но для python, и выясняю, какие вызовы следует делать из Google docs.

Облачные функции: как загрузить дополнительный файл для использовать в коде?

Ответы [ 2 ]

2 голосов
/ 08 января 2020

Мой совет - не использовать файл ключа JSON в облачных функциях (и на всех продуктах GCP). Облачная функция, как и другие продукты GCP, позволяет автоматически загружать учетную запись службы во время развертывания.

Преимущество Идентификация облачной функции в том, что у вас нет ключа файл для хранения в тайне, вам не нужно поворачивать файл ключа для повышения безопасности, у вас нет риска утечки файла ключа, ...

Кстати, используйте сервисная учетная запись по умолчанию в вашем коде.

Если вам нужно получить учетные данные, вы можете использовать для этого библиотеку oauth2 python .

import google.auth

credentials, project_id = google.auth.default()
0 голосов
/ 08 января 2020

Вместо этого вам нужно будет указать относительное имя файла, например, ./my-key-name.json, при условии, что файл находится в том же каталоге, что и ваш main.py файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...