開始使用 Service Control API

本頁說明在本機上設定 Service Control API 的基本必要步驟,並使用 curl 指令進行測試。

初始設定

Service Control API 可搭配代管服務運作。如要使用 Service Control API,您必須先使用 Service Management API 建立代管服務。詳情請參閱「服務管理入門」。

建立代管服務後,您必須完成下列步驟,才能透過您的代管服務使用 Service Control API。

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. 如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

  4. 如要初始化 gcloud CLI,請執行下列指令:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Service Control API:

    gcloud services enable servicecontrol.googleapis.com
  8. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/servicemanagement.serviceController

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: your project ID.
    • USER_IDENTIFIER: the identifier for your user account—for example, myemail@example.com.
    • ROLE: the IAM role that you grant to your user account.
  9. Install the Google Cloud CLI.

  10. 如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

  11. 如要初始化 gcloud CLI,請執行下列指令:

    gcloud init
  12. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  13. Verify that billing is enabled for your Google Cloud project.

  14. Enable the Service Control API:

    gcloud services enable servicecontrol.googleapis.com
  15. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/servicemanagement.serviceController

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: your project ID.
    • USER_IDENTIFIER: the identifier for your user account—for example, myemail@example.com.
    • ROLE: the IAM role that you grant to your user account.
  16. 使用 curl 進行測試

    首先,請定義便於呼叫 Google REST API 的殼層別名:

    alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" '
    

    下列殼層指令序列示範了呼叫 Service Control API 的漸進步驟。

    # Call with invalid service name "invalid.com". For security and privacy
    # reasons, the permission check typically happens before other checks.
    $ gcurl -d '{}' https://servicecontrol.googleapis.com/v1/services/invalid.com:check
    {
      "error": {
        "code": 403,
        "message": "Permission 'servicemanagement.services.check' denied on service 'invalid.com'.",
        "status": "PERMISSION_DENIED"
      }
    }
    
    # Call without proper permission on a service.
    $ gcurl -d '{}' https://servicecontrol.googleapis.com/v1/services/servicecontrol.googleapis.com:check
    {
      "error": {
        "code": 403,
        "message": "Permission 'servicemanagement.services.check' denied on service 'servicecontrol.googleapis.com'.",
        "status": "PERMISSION_DENIED"
      }
    }
    
    # Call with invalid request.
    $ gcurl -d '{}' https://servicecontrol.googleapis.com/v1/services/endpointsapis.appspot.com:check
    {
      "error": {
        "code": 400,
        "message": "Request contains an invalid argument.",
        "status": "INVALID_ARGUMENT"
      }
    }
    
    # This and following call assume that the service, operation name and
    # project being checked are "endpointsapis.appspot.com",
    # "google.example.hello.v1.HelloService.GetHello" and
    # "endpointsapis-consumer" correspondingly.
    # Change to the name of your managed service, operation, and project.
    # Call with invalid request.
    $ gcurl -d '{
      "operation": {
        "operationId": "123e4567-e89b-12d3-a456-426655440000",
        "consumerId": "project:endpointsapis-consumer",
        "startTime": "2016-06-12T22:00:15Z",
        "operationName": "google.example.hello.v1.HelloService.GetHello"
      }
    }' https://servicecontrol.googleapis.com/v1/services/endpointsapis.appspot.com:check
    {
      "checkErrors": [
      {
        "code": "SERVICE_NOT_ACTIVATED",
        "detail": "Service 'endpointsapis.appspot.com' is not enabled for consumer 'project:endpointsapis-consumer'."
      }
      ]
    }
    
    # Successful call to "services.check" method after the API is enabled for
    # the project.
    $ gcurl -d '{
      "operation": {
        "operationId": "123e4567-e89b-12d3-a456-426655440000",
        "consumerId": "project:endpointsapis-consumer",
        "startTime":"2016-07-31T05:20:00Z",
        "operationName":"google.example.hello.v1.HelloService.GetHello"
      }
    }' https://servicecontrol.googleapis.com/v1/services/endpointsapis.appspot.com:check
    {
      "operationId": "123e4567-e89b-12d3-a456-426655440000"
    }
    

    完成先前的步驟後:

    • 您已設定好可運作的本機測試,可用於呼叫任何 Google Cloud Platform API。
    • 您已具備可運作的服務,且其可搭配 Service Management APIService Control API 使用。
    • 您已擁有具備正確權限的服務帳戶,可用於執行您的服務。