Introduzione all'API Service Control

Questa pagina descrive i passaggi di base necessari per configurare l'API Service Control sulla tua macchina locale e testarla utilizzando il comando curl.

Configurazione iniziale

L'API Service Control funziona con i servizi gestiti. Per utilizzare l'API Service Control, devi prima creare un servizio gestito utilizzando l'API Service Management. Per ulteriori informazioni, consulta la pagina Guida introduttiva a Service Management.

Dopo aver creato un servizio gestito, devi completare i seguenti passaggi prima di utilizzare l'API Service Control dal servizio gestito.

  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. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.

  4. Per inizializzare gcloud CLI, esegui questo comando:

    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. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.

  11. Per inizializzare gcloud CLI, esegui questo comando:

    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. Testare con curl

    Innanzitutto, definisci un alias della shell pratico per chiamare le API REST di Google:

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

    La seguente sequenza di comandi shell mostra i passaggi incrementali per chiamare l'API Service Control.

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

    Dopo aver completato i passaggi precedenti:

    • Hai una configurazione di test locale funzionale che puoi utilizzare per chiamare qualsiasi API Google Cloud.
    • Hai un servizio funzionale che puoi utilizzare con l'API Service Management e l'API Service Control.
    • Hai un account di servizio con le autorizzazioni corrette che puoi utilizzare per eseguire il servizio.