К сожалению, нет других методов аутентификации вашего запроса API без использования переменной среды или указания пути к файлу ключа. Есть несколько способов аутентификации вашего запроса в GCP с помощью файла ключа json. Прежде всего, вы должны настроить свою учетную запись службы и загрузить файл json с вашим ключом, как описано здесь .
Затем первый метод использует учетные данные по умолчанию в соответствии с документация :
Если вы не укажете учетные данные при создании клиента, клиентская библиотека будет искать учетные данные в среде.
Это означает, что вам просто нужно установить переменную среды. Затем клиентская библиотека Google определит учетные данные неявно. Кроме того, он также позволяет вам предоставлять учетные данные отдельно от вашего приложения, что упрощает процесс внесения изменений в код. Вы можете установить переменную среды следующим образом:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
После ее установки вы сможете запустить следующий код :
def implicit():
from google.cloud import storage
# If you don't specify credentials when constructing the client, the
# client library will look for credentials in the environment.
storage_client = storage.Client()
# Make an authenticated API request
buckets = list(storage_client.list_buckets())
print(buckets)
Во-вторых, вы Вы можете указать путь к файлу в вашем коде с помощью модуля [google.oauth2.service_account][3]
. В документации указано, что:
Клиент OAuth 2.0 идентифицирует приложение и позволяет конечным пользователям аутентифицировать ваше приложение в Google. Он позволяет вашему приложению получать доступ к API Google Cloud от имени конечного пользователя.
Чтобы использовать модуль, вы можете использовать один из обоих кодов:
#It creates credentials using your .json file and the Credentials.from_service_account_file constructor
credentials = service_account.Credentials.from_service_account_file(
'service-account.json')
Или
#If you set the environment variable, you can also use
#info = json.loads(os.environ['GOOGLE_APPLICATION_CREDENTIALS_JSON_STRING'])
#Otherwise, you specify the path inside json.load() as below
service_account_info = json.load(open('service_account.json'))
credentials = service_account.Credentials.from_service_account_info(
service_account_info)
Наконец, я рекомендую вам проверить стратегии аутентификации в документации .