Вы застряли, потому что вам нужны учетные данные, чтобы иметь возможность загрузить ключ JSON. Msgstr "Вам нужен ключ json для загрузки ключа json". Совершенно абсурдно, нет?
Другое решение состоит в том, чтобы сделать ваше хранилище доступным c: секретный ключ в общедоступном хранилище. Также абсурдно ...
Это потому, что это не правильный путь. Вы можете развернуть функцию с учетной записью службы, она называется идентификатор функции . Это решение сделает ваш код намного проще.
Во-первых, вам не нужно получать файл ключа учетной записи службы из хранилища, поскольку он автоматически загружается с вашей функцией.
Во-вторых, потому что учетная запись службы автоматически загружается в функцию, вы можете просто использовать учетные данные по умолчанию в своем коде
credentials = ServiceAccountCredentials.create_scoped(['https://www.googleapis.com/auth/analytics','https://www.googleapis.com/auth/analytics.edit'])
Дайте мне знать, если вам нужно больше.
РЕДАКТИРОВАТЬ
Я разрешу первую часть, потому что я настоятельно рекомендую вам не использовать JSON файл ключа в среде платформы GCP. Управлять ужасно: вам нужно хранить его надежно, вы должны регулярно его вращать (рекомендуется каждые 90 дней), ... Если вы действительно хотите его использовать, попробуйте секретный менеджер для безопасного хранения и извлечения
Итак, чтобы разблокировать вас (потому что это суть вашего вопроса), вы можете взглянуть на документацию класса python. Вы можете увидеть метод с именем from_json()
. Но этот метод не позволяет определить область. Если вы хотите использовать область, вы можете использовать это from_json_keyfile_dict()
. Таким образом, я сделаю что-то вроде этого
bucket = read_storage_client.get_bucket(bucket_name)
blob = bucket.get_blob("key.json")
json_data_string = blob.download_as_string()
import json
credentials = ServiceAccountCredentials.from_json_keyfile_dict(
json.loads(json_data_string),
scopes=['https://www.googleapis.com/auth/analytics',
'https://www.googleapis.com/auth/analytics.edit'])
Примечание. Вы можете загрузить файл JSON, хранящийся в облачном хранилище, благодаря учетной записи службы по умолчанию, используемой облачной функцией. Это учетная запись службы по умолчанию для вычислительного механизма , которую я не рекомендую использовать по 2 причинам: во-первых, она широко открыта (это редактор проектов), во-вторых, все службы используют эту учетную запись службы по умолчанию, если ничего особенного определено, за исключением некоторых редких сервисов (например, планировщик или pubsub)