Google Cloud 프로젝트 관리 및 전환

Merchant API를 사용하려면 개발자 등록을 통해 Google Cloud 프로젝트를 기본 판매자 센터 계정에 연결해야 합니다. 통합 수명 주기 동안 판매자 센터 계정과 연결된 Google Cloud 프로젝트 ID를 변경하거나, 환경 전반에서 여러 프로젝트를 관리하거나, Content API for Shopping에서 이전할 때 프로젝트를 전환해야 할 수 있습니다.

이 가이드에서는 다음 작업을 실행하는 방법을 설명합니다.

  • 다운타임 없이 기존 Merchant API 통합의 Google Cloud 프로젝트 ID를 변경하거나 순환합니다.
  • 한 판매자 센터 계정에서 Google Cloud 프로젝트를 등록 해제하고 다른 판매자 센터 계정에 등록합니다.
  • Content API for Shopping에서 Merchant API로 이전하는 경우 적절한 Google Cloud 프로젝트 전환 전략을 선택하고 실행합니다.

기본 요건

Google Cloud 프로젝트를 관리하거나 전환하기 전에 개발자 등록 기본 요건을 충족하는지 확인하세요. 자세한 내용은 개발자로 등록 가이드의 기본 요건 섹션을 참고하세요.

주요 규칙 및 제한사항

Google Cloud 프로젝트의 변경사항을 계획할 때는 다음 규칙을 염두에 두세요.

  • 일대다 프로젝트 등록: 단일 기본 판매자 센터 계정에 여러 Google Cloud 프로젝트를 동시에 등록할 수 있습니다. 하지만 각 Google Cloud 프로젝트는 한 번에 하나의 기본 판매자 센터 계정에만 등록할 수 있습니다. 다른 판매자 센터 계정에 이미 연결된 프로젝트를 등록하려고 하면 DUPLICATE_PROJECT_REGISTRATION 이유와 함께 ALREADY_EXISTS (409 Conflict) 오류가 반환됩니다.
  • 프로젝트 소유권 개인 정보 보호: 보안 및 개인 정보 보호상의 이유로 Google 쇼핑 및 Merchant API 지원팀은 Google Cloud 프로젝트의 소유자 또는 관리자 이메일 주소를 공개할 수 없습니다. 프로젝트에 대한 액세스 권한을 잃은 경우 Google Cloud 지원팀에 문의하세요.
  • Content API for Shopping 종료 연장은 프로젝트별로 적용됩니다. Content API for Shopping에 대한 연장된 액세스 승인을 받은 경우 해당 연장은 요청에 제출된 특정 Google Cloud 프로젝트 ID에만 적용됩니다. 확장 프로그램은 새 Google Cloud 프로젝트로 자동으로 전송되지 않습니다.

Merchant API 계정의 Google Cloud 프로젝트 ID 변경하기

이미 Merchant API를 사용하고 있으며 조직 구조 조정, 사용자 인증 정보 순환 정책 또는 이전 프로젝트에 대한 관리 액세스 권한 상실 등의 이유로 통합을 새 Google Cloud 프로젝트로 전환해야 하는 경우 다운타임 없이 프로젝트를 전환할 수 있습니다. 판매자 센터 계정은 등록된 여러 Google Cloud 프로젝트를 동시에 지원하므로 이전 프로젝트를 사용 중지하기 전에 새 프로젝트를 등록할 수 있습니다.

1단계: 새 Google Cloud 프로젝트 만들기 및 구성하기

  1. Google Cloud 콘솔에서 새 프로젝트를 만듭니다. 자세한 내용은 Google Cloud 프로젝트 만들기를 참조하세요.
  2. 새 프로젝트에서 Merchant API (merchantapi.googleapis.com)를 사용 설정합니다. Google Cloud 프로젝트 만들기의 Merchant API 사용 설정 섹션을 참고하세요.
  3. 새 Google Cloud 프로젝트에서 사용자 인증 정보 (서비스 계정 또는 OAuth 2.0 클라이언트 ID)를 만듭니다.
  4. 기본 판매자 센터 계정에서 ADMIN 역할이 있는 사용자로 인증 이메일 주소 (예: 새 서비스 계정 이메일)를 추가합니다.

2단계: 새 Google Cloud 프로젝트 등록

새 Google Cloud 프로젝트의 사용자 인증 정보를 사용하여 인증하고 accounts.developerRegistration.registerGcp 메서드를 호출하여 새 프로젝트를 기본 판매자 센터 계정에 연결합니다. 자세한 내용은 개발자로 등록의 등록 호출하기 섹션을 참고하세요.

3단계: 등록된 Google Cloud 프로젝트 확인하기

기존 Google Cloud 프로젝트와 새 Google Cloud 프로젝트가 모두 판매자 센터 계정에 연결되어 있는지 확인하려면 accounts.developerRegistration.getDeveloperRegistration 메서드를 호출합니다.

GET https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration
Authorization: Bearer ACCESS_TOKEN

다음을 바꿉니다.

  • ACCOUNT_ID: 판매자 센터 ID
  • ACCESS_TOKEN: API 호출을 수행하기 위한 승인 토큰

응답은 gcpIds 필드에 연결된 모든 프로젝트의 숫자 Google Cloud 프로젝트 번호가 포함된 DeveloperRegistration 리소스를 반환합니다.

{
  "name": "accounts/ACCOUNT_ID/developerRegistration",
  "gcpIds": [
    "123456789012",
    "987654321098"
  ]
}

accounts.developerRegistration.getAccountForGcpRegistration 메서드를 호출하여 호출하는 Google Cloud 프로젝트가 등록된 판매자 센터 계정을 확인할 수도 있습니다.

GET https://merchantapi.googleapis.com/accounts/v1/accounts:getAccountForGcpRegistration
Authorization: Bearer ACCESS_TOKEN

다음을 바꿉니다.

  • ACCESS_TOKEN: 확인하려는 Google Cloud 프로젝트의 사용자 인증 정보를 사용하여 생성된 승인 토큰입니다.

4단계: 트래픽 전환 및 이전 Google Cloud 프로젝트 등록 취소

  1. 새 Google Cloud 프로젝트의 사용자 인증 정보를 사용하도록 애플리케이션 구성을 업데이트합니다. 두 프로젝트가 모두 등록되어 있으므로 워크로드가 중단 없이 전환됩니다.
  2. 모든 트래픽이 새 프로젝트를 사용하면 이전 Google Cloud 프로젝트 사용자 인증 정보로 인증하고 accounts.developerRegistration.unregisterGcp 메서드를 호출하여 이전 프로젝트 링크를 삭제할 수 있습니다.
POST https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp
Content-Type: application/json
Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN

다음을 바꿉니다.

  • ACCOUNT_ID: 판매자 센터 ID
  • OLD_PROJECT_ACCESS_TOKEN: API 호출을 수행하기 위한 이전 Google Cloud 프로젝트의 승인 토큰

자바

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationName;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationServiceClient;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationServiceSettings;
import com.google.shopping.merchant.accounts.v1.UnregisterGcpRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 * This class demonstrates how to unregister the GCP project currently used to call the Merchant API
 * for a specific account.
 */
public class UnregisterGcpSample {

  public static void unregisterGcp(Config config) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    DeveloperRegistrationServiceSettings developerRegistrationServiceSettings =
        DeveloperRegistrationServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates DeveloperRegistration name to identify the DeveloperRegistration.
    // The name has the format: accounts/{account}/developerRegistration
    String name =
        DeveloperRegistrationName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .build()
            .toString();

    // Calls the API and propagates any network failures/errors.
    try (DeveloperRegistrationServiceClient developerRegistrationServiceClient =
        DeveloperRegistrationServiceClient.create(developerRegistrationServiceSettings)) {

      // Creates a request to unregister the GCP project.
      UnregisterGcpRequest request = UnregisterGcpRequest.newBuilder().setName(name).build();

      System.out.println("Sending UnregisterGcp request for: " + name);
      developerRegistrationServiceClient.unregisterGcp(request);
      System.out.println("Unregister GCP successful.");
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    unregisterGcp(config);
  }
}

cURL

curl -X POST \
  "https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN"

등록된 Google Cloud 프로젝트를 다른 판매자 센터 계정에 재할당

Google Cloud 프로젝트는 한 번에 하나의 기본 판매자 센터 계정에만 등록할 수 있으므로 다음 단계에 따라 기존 프로젝트를 한 판매자 센터 계정 (OLD_ACCOUNT_ID)에서 다른 판매자 센터 계정 (NEW_ACCOUNT_ID)으로 재할당하세요. 프로젝트를 등록할 판매자 센터 계정을 선택하는 방법에 관한 가이드라인은 중요 고려사항을 참고하세요.

  1. OLD_ACCOUNT_ID에 액세스할 수 있는 Google Cloud 프로젝트의 사용자 인증 정보를 사용하여 인증하고 accounts/OLD_ACCOUNT_ID/developerRegistration에서 unregisterGcp를 호출합니다.
  2. 인증 ID에 NEW_ACCOUNT_ID에 대한 ADMIN 역할이 있고 NEW_ACCOUNT_ID에 확인된 웹사이트가 있는지 확인합니다.
  3. 동일한 Google Cloud 프로젝트의 사용자 인증 정보를 사용하여 accounts/NEW_ACCOUNT_ID/developerRegistration에서 registerGcp를 호출합니다. NEW_ACCOUNT_ID에 아직 API_DEVELOPER 역할이 있는 사용자가 없으면 developerEmail 요청 필드에 유효한 사용자 이메일을 전달합니다. .gserviceaccount.com로 끝나는 서비스 계정 이메일은 developerEmail로 사용할 수 없습니다.

Content API for Shopping에서 이전할 때 Google Cloud 프로젝트 전환

Content API for Shopping에서 Merchant API로 이전할 때 기존 Google Cloud 프로젝트에 대한 액세스 제한이 발생할 수 있습니다. 예를 들어 원래 API 키가 기존 판매자 센터 인증 워크플로를 통해 직접 구성되었거나 원래 프로젝트 소유자가 조직을 떠난 경우입니다.

기존 프로젝트를 유지할지 아니면 이전 프로젝트에서 Content API for Shopping을 유지하면서 Merchant API에 새 프로젝트를 사용할지에 따라 다음 두 가지 옵션 중 하나를 선택합니다.

마이그레이션 프로젝트 전략 선택

시나리오 이전 프로젝트에 대한 관리 액세스 권한이 필요한가요? 사용 설정할 API 새 프로젝트에 Content API for Shopping 확장 프로그램이 필요한가요?
옵션 1: 기존 프로젝트 유지 예 (또는 Google Cloud 지원을 통해 복구) 기존 프로젝트에서 Merchant API 사용 설정 (Content API for Shopping은 이미 사용 설정됨) 아니요 (이전 프로젝트 ID의 기존 확장 프로그램은 유효하게 유지됨)
옵션 2: Content API for Shopping에 기존 프로젝트를 유지하고 Merchant API에 새 프로젝트 사용하기 아니요 새 프로젝트에서 Merchant API를 사용 설정합니다(이전 프로젝트에서 Content API for Shopping을 사용 설정된 상태로 유지). 아니요 (이전 프로젝트는 확장 프로그램을 유지하고 새 프로젝트는 Merchant API만 호출함)

옵션 1: 기존 Google Cloud 프로젝트 유지

Content API for Shopping과 Merchant API 모두에 기존 Google Cloud 프로젝트를 사용하려면 이 옵션을 선택하세요.

시작하기 전에 기존 프로젝트에 대한 액세스 권한을 확인하거나 복구하세요. Google Cloud 콘솔에 로그인하고 계정이 기존 프로젝트에서 다음 역할 중 하나를 보유하고 있는지 확인합니다.

  • 소유자 (roles/owner),
  • 편집자(roles/editor)
  • 서비스 사용량 관리자(roles/serviceusage.serviceUsageAdmin)
  1. Merchant API 사용 설정: Google Cloud API 라이브러리에서 또는 gcloud 명령어를 사용하여 merchantapi.googleapis.com를 사용 설정합니다. 단계별 안내는 판매자 센터에서 API 인증 구성을 참고하세요.
  2. 판매자 센터에 Google Cloud 프로젝트 등록: 개발자로 등록 가이드의 단계에 따라 기존 프로젝트의 요청을 승인하고 registerGcp 메서드를 호출하여 기존 Google Cloud 프로젝트를 기본 판매자 센터 계정에 연결합니다. 기존 서비스 계정 키와 승인된 Content API for Shopping 확장 프로그램은 변경 없이 계속 작동합니다.

옵션 2: Content API for Shopping에 기존 Google Cloud 프로젝트를 사용하고 Merchant API에 새 프로젝트 사용

기존 Shopping용 Content API 통합이 이미 유효한 사용자 인증 정보와 승인된 확장 프로그램으로 이전 Google Cloud 프로젝트에서 실행 중이고 별도의 전용 Google Cloud 프로젝트에서 새 Merchant API 통합을 빌드하려는 경우 이 옵션을 선택합니다.

  1. 기존 프로젝트에서 Content API for Shopping 통합 유지: 기존 Content API for Shopping 워크플로와 사용자 인증 정보를 이전 Google Cloud 프로젝트에서 실행 중인 상태로 유지합니다. 이전 프로젝트 ID의 연장 요청이 승인되면 현재 Content API for Shopping 통합이 연장된 기한까지 계속 작동합니다.
  2. Merchant API 전용 새 Google Cloud 프로젝트 만들기: 새 Google Cloud 프로젝트를 만들고, merchantapi.googleapis.com를 사용 설정하고, 새 Merchant API 워크로드의 사용자 인증 정보 (서비스 계정 또는 OAuth 2.0 클라이언트 ID)를 만듭니다.
  3. 새 프로젝트 등록: 개발자로 등록의 단계에 따라 새 프로젝트의 요청을 승인하고 유효한 개발자 연락처 이메일로 registerGcp 메서드를 호출합니다. 서비스 계정 이메일(.gserviceaccount.com로 끝남)은 developerEmail로 사용할 수 없습니다.
  4. 워크로드 점진적 이전: Content API for Shopping 예정된 지원 종료일(또는 승인된 연장 만료일) 전에 API 호출을 기존 Content API for Shopping 프로젝트에서 새 Merchant API 프로젝트로 점진적으로 전환하고 이전이 완료되면 기존 프로젝트를 사용 중지합니다.

특수한 경우: 이전을 완료하기 전에 이전 Google Cloud 프로젝트에 대한 액세스 권한을 상실함

Content API for Shopping은 지원 중단되었으므로 더 이상 Google Cloud API 라이브러리에 표시되지 않으며 새로 생성된 Google Cloud 프로젝트에서 사용 설정할 수 없습니다. 따라서 기존 Content API for Shopping 워크로드를 새 Google Cloud 프로젝트로 직접 이동할 수 없습니다.

사용자 인증 정보가 취소되었거나 프로젝트 액세스 권한을 복구할 수 없는 등의 이유로 이전 프로젝트에서 더 이상 Content API for Shopping을 호출할 수 없는 경우 다음 단계를 따르세요.

  1. Google Cloud 지원팀에 문의하여 기존 Google Cloud 프로젝트에 대한 액세스 권한을 복구합니다(옵션 1).
  2. 옵션 2에 따라 새 Google Cloud 프로젝트를 만들고 등록한 후 영향을 받는 워크플로를 Merchant API로 직접 이전합니다. 중요한 이전 차단 문제가 발생하면 Merchant API 지원팀에 문의하세요.

다음 단계