Service Control API スタートガイド

このページでは、ローカルマシンで Service Control API を設定し、curl コマンドでテストするために必要な基本的な手順について説明します。

初期設定

Service Control API はマネージド サービスと連携します。Service Control API を使用するには、まず Service Management API を使用してマネージド サービスを作成する必要があります。詳細については、Service Management スタートガイドをご覧ください。

マネージド サービスを作成したら、マネージド サービスから Service Control API を使用する前に、以下の手順を完了する必要があります。

  1. Google Cloud Console にアクセスし、マネージド サービスが含まれているプロジェクトを選択します。
  2. Google Cloud Console でプロジェクトに対し Service Control API を有効にします
  3. ローカルテスト用に新しいサービス アカウントを作成し、そのアカウントの JSON 認証情報ファイルをローカルマシンにダウンロードします。以下の例では、ファイルパスが ~/credentials.json であると仮定しています。
  4. 新しく作成したサービス アカウントに roles/servicemanagement.serviceController ロールを付与します。詳しくは、アクセス制御をご覧ください。
  5. ローカルマシンに oauth2l をインストールして、Google OAuth システムとやり取りできるようにします。

curl によるテスト

  1. まず、初期設定を確認します。
oauth2l header --json ~/credentials.json cloud-platform
  1. 初期設定が正しければ、次のような出力が表示されます。

    Authorization: Bearer y29.xxxxxxx
    
  2. Google REST API の呼び出しに便利なシェル エイリアスを定義します。

alias gcurl='curl -H "$(oauth2l header --json ~/credentials.json cloud-platform userinfo.email)" -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 で使用できる便利なサービスが導入されます。
  • サービスの実行に使用できる、適切な権限が付与されたサービス アカウントが作成されます。