Ваша ошибка состоит из двух частей. Первый:
curl: (6) Could not resolve host: POST
говорит о том, что команда curl не может найти имя хоста "POST", поскольку вы пропустили параметр -X, первая часть вашей команды должна выглядеть следующим образом:
curl -X POST
Далее, ваш URL не совсем правильный формат, так как не должно быть параметров URL (в данном случае это часть ?key=key
), так как это запрос POST - будут включены параметры из API. в теле запроса.
Однако я подозреваю, что даже в этом случае у вас будет ошибка отказа в разрешении, поскольку curl не будет управлять аутентификацией и авторизацией oauth, которые необходимы для работы этого запроса - выэффективно отображаются в API как не прошедшие проверку подлинности. В этом случае я бы рекомендовал использовать одну из клиентских библиотек для выполнения запроса или использовать команду gcloud вместо curl. Они оба значительно упростят управление аутентификацией.
В документации по самому API есть примеры на C #, Go, Node, Python и других, посмотрите здесь: https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts.keys/create
Документация по использованию gcloud для достижения этой цели приведена здесь: https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-create-gcloud
Тем не менее, если вы действительно хотите сделать это с помощью curl из облачной оболочки (где у вас есть аутентифицированный сеанс gcloud), это последовательностьнеобходимых вам команд:
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl -X POST --header "Authorization: Bearer ${ACCESS_TOKEN}" \
https://iam.googleapis.com/v1/projects/PROJECTID/serviceAccounts/SERVICEACCOUNTNAME@PROJECTID.iam.gserviceaccount.com/keys
Если вы не работаете на машине с облачной оболочкой, вам нужно сначала убедиться, что у вас есть gcloud auth:
gcloud auth login