Можно ли получить доступ к 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 за указание на меня!

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