Получение 403 из API Google Cloud Monitoring с использованием учетной записи службы и аутентификации JWTPython

Программы на Python
Ответить
Anonymous
 Получение 403 из API Google Cloud Monitoring с использованием учетной записи службы и аутентификации JWT

Сообщение Anonymous »

Код, который я использую:

Код: Выделить всё

from google.oauth2 import service_account
from google.cloud import monitoring_v3

def build_time(isodate: str) -> int:
from datetime import datetime

utc_dt = datetime.strptime(isodate, '%Y-%m-%dT%H:%M:%S.%fZ')
return int((utc_dt - datetime(1970, 1, 1)).total_seconds())

SCOPES = [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/monitoring",
"https://www.googleapis.com/auth/monitoring.read"
]
SERVICE_ACCOUNT_FILE = '/path/to/service_account_file.json'

credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)

client = monitoring_v3.MetricServiceClient(credentials=credentials)

name = 'projects/MY_PROJECT_NAME'
filter = 'metric.type = "loadbalancing.googleapis.com/l4_proxy/tcp/new_connections_count"'
end_time = build_time('2024-10-22T10:40:00.000Z')
start_time = build_time('2024-10-22T10:30:00.000Z')
interval = monitoring_v3.TimeInterval({
"end_time": {"seconds": end_time},
"start_time": {"seconds": start_time},
})
request = monitoring_v3.ListTimeSeriesRequest(
name=name,
filter=filter,
interval=interval
)

try:
page_result = client.list_time_series(request=request)
except Exception as error:
print("Error happened:", error)
exit()

print(page_result)
Зависимости:

Код: Выделить всё

google-auth==2.35.0
google-cloud-monitoring==2.23.0
Я всегда получаю:

Код: Выделить всё

Error happened: 403 Permission monitoring.timeSeries.list denied (or the resource may not exist).
Если я удалю аргумент учетных данных из MetricServiceClient, он вернется к моей учетной записи пользователя для аутентификации (настроенной с помощью инструмента gcloud cli), и это будет работать. Но когда я использую поток аутентификации JWT, настроенный для учетной записи службы, я всегда получаю ошибку отказа в разрешении. Я следовал инструкциям здесь, чтобы настроить ключ служебной учетной записи.
РЕДАКТИРОВАТЬ: я запускаю это локально. Работает только локально для разработчиков.

Подробнее здесь: https://stackoverflow.com/questions/791 ... nd-jwt-aut
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»