Несколько вещей, чтобы предложить в ссылке на эту ссылку:
https://cloud.google.com/storage/docs/reference/libraries#client-libraries-install-python
Существует несколько способов установки ролей для учетных записей служб для доступа к Хранилищу Google:
https://cloud.google.com/iam/docs/understanding-roles#cloud_storage_roles
Использование роли по умолчанию при создании учетной записи службы
При создании учетной записи службы выберите Роль проекта: Хранилище -> Администратор хранилища . Установка этой роли позволит вашей учетной записи службы получать доступ и управлять объектами из облачного хранилища. Использование роли Storage Admin гарантирует, что вы предоставите наименьшее количество привилегий учетной записи службы, чтобы она не могла получить доступ к другим службам.
Если у вас есть проблемы с аутентификацией, возможно, посмотрите на настройку роли Проект -> Редактор , которая должна предоставить доступ к редактированию учетной записи службы большинству служб GCP. Просто имейте в виду, что если учетная запись службы скомпрометирована, пользователь получит доступ к большинству ваших услуг в проекте GCP.
Использование пользовательской роли для наследования нескольких ролей
Устанавливая пользовательскую роль, вы можете наследовать разрешения, предоставленные ряду ролей по умолчанию. Хороший способ сделать это - использовать «Создать роль из выделения» в разделе IAM & Admin -> Roles консоли GCP.
Например, вы можете объединить BigQuery Admin и Storage Object Admin в одну настраиваемую роль, установив флажки для каждой роли и создав собственную настраиваемую роль, которую вы можете использовать. затем выделите свою учетную запись службы в разделе IAM GCP .
Если у вас есть служебная учетная запись с правильными разрешениями, вы сможете установить переменную среды GOOGLE_APPLICATION_CREDENTIALS
и использовать библиотеку google
для доступа к своим хранилищам.
Попробуйте эту модификацию своего кода, если у вас есть служебная учетная запись с правильной ролью, чтобы проверить, может ли она перечислить все сегменты учетная запись имеет доступ к
import os
from google.cloud import storage
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "/home/user/Downloads/[FILE_NAME].json"
# Instantiates a client
storage_client = storage.Client()
# List all the buckets available
for bucket in storage_client.list_buckets():
print(bucket)