1

是否可以使用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 Unauthorized 响应:

"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"
}
4

2 回答 2

1

Cloud Scheduler API 使用https://cloud.google.com/docs/authentication/production中所述的服务帐户凭据。正如 API 文档所述,有限数量的 GCP 服务支持 API 密钥,并且不包括 Cloud Scheduler。

如果您正在运行代码以与 App Engine、Cloud Functions 或 Cloud Run 上的 Cloud Scheduler API 交互,则服务帐户是内置的,您需要做的就是授予该服务帐户通过 IAM 与 Cloud Scheduler 交互的权限。

这些文档提供了一些关于使用Cloud Scheduler 客户端库进行设置的更精简的信息。

于 2019-05-12T22:08:36.020 回答
1

我很困惑看到 API 浏览器建议作为可能的凭据 Google OAuth 2.0 或 API 密钥,以及来自 Google Cloud API 凭据(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指出我!

于 2019-05-15T10:27:24.260 回答