Primeiros passos com a API Service Control

Esta página descreve as etapas básicas necessárias para configurar a API Service Control em sua máquina local e testá-la usando o comando curl.

Configuração inicial

A API Service Control funciona com serviços gerenciados. Para usar a API Service Control, você precisa primeiro criar um serviço gerenciado usando a API Service Management. Para obter mais informações, consulte Primeiros passos com a Service Management.

Depois de criar um serviço gerenciado, você precisa concluir as etapas a seguir antes de usar a API Service Control do seu serviço gerenciado.

  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 você estiver usando um provedor de identidade externo (IdP), primeiro faça login na CLI gcloud com sua identidade federada.

  4. Para inicializar a CLI gcloud, execute o seguinte 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 você estiver usando um provedor de identidade externo (IdP), primeiro faça login na CLI gcloud com sua identidade federada.

  11. Para inicializar a CLI gcloud, execute o seguinte 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. Testar com curl

    Primeiro, defina um alias prático para o shell para chamar as APIs REST do Google:

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

    Na sequência de comandos shell a seguir, veja as etapas incrementais para chamar a 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"
    }
    

    Depois de concluir as etapas anteriores, você terá:

    • uma configuração funcional de teste local para chamar quaisquer APIs do Google Cloud Platform;
    • um serviço funcional para usar com a API Service Management e a API Service Control;
    • uma conta de serviço com as permissões corretas para executar o serviço.