Ошибка доступа к секретному менеджеру 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()
.