Можно ли получить доступ к API-интерфейсу Google Cloud Scheduler с помощью ключа API?
Можно ли получить доступ к API-интерфейсу Google Cloud Scheduler с помощью ключа API?
Метод: projects.locations.jobs.create https://cloud.google.com/scheduler/docs/reference/rest/v1/projects.locations.jobs/create
Я пытаюсь создать работу с помощью curl:
curl -X POST \
'https://cloudscheduler.googleapis.com/v1/projects/my-project/locations/nam5/jobs?key=[MyAwesomeAPIKey]' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "test-awesome-job",
"description": "My first job",
"schedule": "45 23 * * 6",
"timeZone": "utc",
"pubsubTarget": {
"topicName": "projects/my-project/topics/topic-name",
"attributes": {
"name": "39ro"
}
}
}'
но это приводит к 401 несанкционированному ответу:
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
2 ответа
Cloud Scheduler API использует учетные данные учетной записи службы, как описано в https://cloud.google.com/docs/authentication/production. Как утверждают документы API, ограниченное число сервисов GCP поддерживают ключи API, и это не включает Cloud Scheduler.
Если вы запускаете код для взаимодействия с API-интерфейсом Cloud Scheduler в App Engine, Cloud Functions или Cloud Run, учетная запись службы является встроенной, и все, что вам нужно сделать, это предоставить этой учетной записи разрешение на взаимодействие с Cloud Scheduler через IAM.
Документы содержат более упорядоченную информацию о настройке с помощью клиентских библиотек Cloud Scheduler.
Я запутался, наблюдая за проводником API, который предлагал в качестве возможных учетных данных Google OAuth 2.0 или ключ API, и от инструмента "Помоги мне выбрать" из учетных данных API Google Cloud ( https://console.cloud.google.com/apis/credentials), который, по-видимому, теперь сообщает правильное решение:
For your situation you can use Application Default Credentials,
which provide a simple way to access Google APIs from App Engine or Compute Engine.
ранее он показывал ключи API в качестве возможного варианта.
Спасибо Grayside за указание на меня!