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. Google OAuth 시스템과 상호작용하기 위해 로컬 머신에 oauth2l을 설치합니다.

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와 함께 사용할 수 있는 서비스가 있으며 제대로 작동합니다.
  • 서비스를 실행하는 데 사용할 수 있는 권한을 가진 서비스 계정이 있습니다.