gcloud auth login и python для загрузки - PullRequest
0 голосов
/ 07 мая 2019

У меня есть программа Python, которая загружает и загружает из корзины GCS, используя служебную учетную запись.Это работает как ожидалось.

Из-за некоторых бизнес-ограничений владелец корзины не может использовать учетную запись службы для нескольких других групп.В настоящее время они используют аутентификацию GSUtil (вход в систему gcloud) по общему почтовому адресу группы (Teamgroup@companydns.com).

Владелец корзины предоставил необходимый доступ к общему почтовому адресу группы - "Teamgroup@companydns.com».Теперь меня попросили использовать этот почтовый адрес для загрузки и загрузки файла в GCS и из него с помощью программы Python (здесь я не должен использовать GSUtil)?

Я могу использовать Google SDK для своей реализации на Python.Есть ли способ загрузить файл без учетной записи службы в моей программе Python?

Пожалуйста, покажите мне немного света на этом.

1 Ответ

1 голос
/ 07 мая 2019

Одним из решений является выгрузка объекта с помощью запроса, вызывающего JSON REST API .

. Вам необходимо предоставить OAUTH_TOKEN, который вы можете получить, введя команду gcloud auth print-access-token ( документы ).Если вы вошли в систему как член этой группы, у которой есть доступ к корзине, то у вас будет доступ с этим токеном.

После того, как вы получите этот токен, вы можете сделать запрос внутри вашей программы Python, нескольконапример:

import requests
filepath = '/path/to/file'
url = 'https://www.googleapis.com/upload/storage/v1/b/[BUCKET_NAME]/o?uploadType=media&name=[OBJECT_NAME]'

headers = {
    "Authorization": "Bearer [PRINTED_ACCESS_TOKEN]",
    "Content-Type": "text/html",
}

with open(filepath, "rb") as dafile:
    r = requests.post(url, headers=headers, data=dafile)
    print(r.content)

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

...