Ошибка доступа к секретному менеджеру GCP «Неверный грант» 503 с Python 3.11

действительно теряешь это здесь. Я написал простой фрагмент кода только для того, чтобы получить доступ к секретам, и каждый раз, когда я его запускаю, он просто выдает следующую ошибку:

      google.api_core.exceptions.RetryError: Deadline of 60.0s exceeded while calling target function, last exception: 503 Getting metadata from plugin failed with error: ('invalid_grant: Bad Request', {'error': 'invalid_grant', 'error_description': 'Bad Request'})

Ниже мой код:

      from google.cloud import secretmanager

def secretFinder(projectid, secretid, version):

    client = secretmanager.SecretManagerServiceClient()
    name = f"projects/{projectid}/secrets/{secretid}/versions/{version}"
    response = client.access_secret_version(name=name)
    return response.payload.data.decode('UTF-8')

secretFinder("my_project", "test", "latest")

Мой CLI авторизован с помощью моей учетной записи службы, которая содержит следующие связанные с ним роли:

      Owner
Secret Manager Admin
Secret Manager Secret Accessor

Я подтвердил, что только моя учетная запись авторизована, запустив 

      gcloud auth list

Затем я убедился, что установил правильный проект, запустив

      gcloud config set project PROJECT_ID

Где идентификатор проекта — «my_project». Я не использовал номер проекта, а вместо этого использовал фактический идентификатор проекта, как указано. 

По иронии судьбы, если я запущу следующую команду через cli, я действительно получу свой секрет:

      gcloud secrets versions access --secret=test latest

Я действительно не знаю, что делать в этот момент, и любая помощь будет принята с благодарностью.

Заранее спасибо!

1 ответ

Бегатьgcloud auth application-default loginи попробуй еще раз.

Если это не сработает, переместите этот вопрос в Stack Overflow. Добавьте сведения о среде, в которой вы запускаете код.

Примечание: интерфейс командной строкиgcloudиспользует учетные данные, отличные от вашего кода. Ваш код использует ADC (учетные данные приложения по умолчанию), поэтому вы должны пройти аутентификацию с помощьюapplication-defaultвариант команды.

Другой вариант — изменить код и указать учетную запись службы в качестве параметра дляSecretManagerServiceClient().

Другие вопросы по тегам