지원 통합

이 섹션에서는 제품에 포함된 지원을 제공하려고 할 때의 지원 워크플로에 대해 설명합니다.

Google을 통해 제품을 구입한 고객에게 지원을 제공하려면 시스템을 Google에 통합해야 합니다. 통합은 Google이 제공하는 다음 항목을 기반으로 합니다.

  • 등록 프로세스 중 사용자의 지원 자격을 확인하기 위해 사용되는 키

  • 사용자의 지원 자격 상태를 주기적으로 폴링하기 위해 키를 전달할 수 있는 API(구독 API)

사용자의 지원 ID 받기

지원 통합은 사용자에게 해당 지원 ID로 표시되는 외부 계정 ID에 집중됩니다.

사용자의 지원 ID를 가져오려면 지원 워크플로를 만들고 워크플로 시작 시 URL을 제공합니다. 그런 후 Google이 해당 URL로 외부 계정 ID를 전송합니다.

지원 워크플로를 구현할 때는 URL의 일부로 외부 계정 ID를 수락해야 합니다. 외부 계정 ID는 아래 예에 표시된 것처럼 URL 경로의 일부이거나 쿼리 매개변수여야 합니다.

# External account ID in path
http://example.com/mysupportpage/{external_account_id}?someparameter=yes

# External account ID as a query parameter
http://example.com/mysupportpage?eid={external_account_id}&something_else

URL의 텍스트 {external_account_id}는 외부 계정 ID로 바뀝니다. Google Cloud Marketplace에 여러 제품이 등록된 경우 URL이 가리키는 제품을 식별하는 쿼리 매개변수를 포함할 수 있습니다.

구독 API 사용

사용자의 외부 계정 ID가 있으면 Google에서 제공하는 구독 API를 사용하여 언제든지 해당 계정에 대한 지원 자격을 확인할 수 있습니다. 구독이라는 항목을 확인하여 자격을 추적합니다.

각 구독에는 고유한 구독 ID 번호가 있으며 Cloud Marketplace에 등록된 모든 솔루션에 대해 고객당 고유한 구독이 생성되므로 구독 ID로 구독을 쿼리하여 제품과 함께 시작일, 종료일 등의 고객 기록에 대한 추가 세부 정보를 가져올 수 있습니다.

구독 API 액세스

구독 API는 비공개 API이므로 액세스가 필요한 개발자 및 프로젝트는 허용 목록에 있어야 합니다.

허용 목록에 추가하고 설정하기 위해서는 다음 단계를 따르세요.

  1. API 문서에 액세스해야 하는 개발자를 위한 이메일 주소 목록을 Google Cloud Marketplace 파트너 엔지니어(cloud-partner-onboarding@google.com)에게 보냅니다. 개발자가 http://console.developers.google.com에 로그인할 때 사용할 정확한 이메일 주소여야 합니다. 이 개발자는 구독 API 문서에 액세스할 수 있는 권한을 부여하는 그룹에 추가됩니다.

  2. 제품의 프로젝트 ID를 Google Cloud Marketplace 파트너 엔지니어에게 보내고 API 호출 권한을 요청합니다. 필요한 경우 여러 프로젝트를 허용 목록에 추가할 수 있습니다.

  3. https://console.developers.google.com의 왼쪽 상단 근처에 있는 메뉴를 확장하고 API 및 서비스를 클릭한 다음 검색하여 Cloud Billing API를 사용하도록 설정합니다.

  4. 프로젝트와 연결된 OAuth2 서비스 계정을 만들고 이 계정의 이메일 주소를 Google Cloud Marketplace 파트너 엔지니어에게 보냅니다. 이 사용자는 허용 목록에 추가되면 개발자의 모든 구독을 읽을 수 있으며 OAuth 대화상자를 사용하여 고객의 권한을 요청하는 것을 제외한 모든 요청을 승인하는 데 사용됩니다.

구독 API는 공개 API가 아니기 때문에 기본적으로 Python 클라이언트 라이브러리에 포함되지 않습니다. 이 API와 함께 Python 클라이언트 라이브러리를 사용하려는 경우 검색 파일에 액세스하는 데 도움이 필요하면 Google 파트너 엔지니어에게 문의해야 합니다.

아래 초기화 예에서 검색 파일 이름은 검색 파일이 다운로드된 경로로 설정됩니다.

   # Load the local copy of the discovery document
   f = file(os.path.join(os.path.dirname(__file__),
         "cloudbilling-subscriptions_discovery.json"), "r")
   discovery = f.read()
   f.close()

   # Construct a service from the local documents
   service = build_from_document(discovery,
         base="https://www.googleapis.com/",
         http=http)

클라이언트 라이브러리는 또한 고객 사용자 인증 정보 및 OAuth2 서비스 계정을 위한 OAuth 인증을 지원합니다. 자세한 내용은 Python용 Google API 클라이언트 라이브러리의 OAuth 2.0 문서를 참조하세요.

구독 API 쿼리

구독 데이터에 액세스하기 위한 권한을 얻으려면 OAuth2 서비스 계정을 만들고 API 요청 승인을 위해 사용하려는 계정을 알려주어야 합니다. 그런 다음 Google은 모든 고객에 대해 구독을 읽을 수 있는 액세스 권한을 서비스 계정에 부여합니다. 자세한 내용은 서버 간 애플리케이션에 OAuth 2.0 사용을 참조하세요.

이 API는 구독 리소스를 반환하는 읽기 전용 RESTful API로, 다음 정보를 가져오는 데 사용할 수 있습니다.

  • name - 단일 구독 리소스의 식별자입니다.
  • externalAccountId - 단일 청구 계정의 식별자입니다.
  • version — 레코드가 수정될 때마다 업데이트되는 버전 번호입니다. 마지막 읽기 이후의 변경사항을 쉽게 감지하는 데 사용할 수 있습니다.
  • status - 다음 값 중 하나입니다.
    • ACTIVE — 구독이 현재 활성화되어 있고 고객이 개발자로부터 지원을 받을 수 있습니다. 지난 30일 동안 계정에 활성 VM이 있는 경우 구독은 활성 상태로 간주됩니다.
    • COMPLETE — 고객이 제품에서 실행하는 활성 VM이 없고 지난 30일 동안 구독하지 않았기 때문에 구독이 더 이상 활성 상태가 아닙니다.

  • subscribedResources - 이 구독에서 지원되는 리소스 목록입니다.
  • startDate - RFC 3339 형식 문자열로 된 구독 시작 날짜입니다.
  • endDate — RFC 3339 형식의 문자열로 된 구독 종료 날짜(종료된 경우)입니다.
  • 마지막 하트비트 타임스탬프 라벨 (키 포함) - 이 라벨의 값은 제품을 실행하는 모든 VM의 마지막 하트비트의 타임스탬프를 나타냅니다. 예: cloudmarketplacepartner.googleapis.com/last_heartbeat_us

고객이 Google Cloud Console에서 사이트에 액세스하기 위해 링크를 클릭하면 다음 요청을 통해 고객이 링크를 사용할 권한이 있는지 확인해야 합니다.

  1. 외부 계정 ID에 대한 구독을 나열합니다.
  2. 제품의 활성 구독을 찾습니다.
  3. 구독 ID를 사용하여 구독 정보를 가져옵니다.

고객이 승인된 사용자인 경우 요청이 성공합니다. 고객이 구독에 승인된 사용자가 아니면 호출이 승인되지 않은 오류 코드(HTTP 403)를 반환합니다.

이를 위해서는 등록 프로세스 중 표준 OAuth 요청 흐름을 사용해서 자신의 구독 데이터를 읽을 수 있도록 고객 권한을 요청해야 합니다.

이후 구독 데이터 새로고침 요청은 이전에 만든 서비스 계정을 사용합니다.

고객 지원 등록 흐름

고객이 Cloud Marketplace 또는 Compute Engine API를 통해 제품을 배포하면 Google Cloud Console에는 지원 등록을 완료할 수 있는 사이트 링크가 표시됩니다. 이 링크에는 해당 계정에 사용할 외부 계정 ID가 포함됩니다.

사이트에서는 고객이 계정을 만들도록 허용하고, 고객에게 필요한 연락처 정보를 제공해야 합니다. Google은 고객에 대한 어떠한 개인 식별 가능 정보도 개발자에게 제공하지 않습니다. 개발자는 고객의 계정과 Google에서 제공한 외부 계정 ID 사이의 매핑을 유지 관리해야 합니다.