Zarządzanie projektami w chmurze Google Cloud i ich przenoszenie

Aby korzystać z Merchant API, musisz połączyć swój projekt w chmurze Google z głównym kontem Merchant Center za pomocą rejestracji dewelopera. W trakcie cyklu życia integracji może być konieczna zmiana identyfikatora projektu Google Cloud powiązanego z kontem Merchant Center, zarządzanie kilkoma projektami w różnych środowiskach lub przenoszenie projektów podczas migracji z Content API for Shopping.

Z tego przewodnika dowiesz się, jak:

  • zmienić lub odnowić identyfikator projektu Google Cloud w przypadku istniejącej integracji z Merchant API bez przestoju;
  • wyrejestrować projekt Google Cloud z jednego konta Merchant Center i zarejestrować go na innym koncie Merchant Center;
  • wybrać i wdrożyć odpowiednią strategię przenoszenia projektu Google Cloud, jeśli migrujesz z Content API for Shopping do Merchant API.

Wymagania wstępne

Zanim zaczniesz zarządzać projektami Google Cloud lub je przenosić, sprawdź, czy spełniasz wymagania wstępne dotyczące rejestracji dewelopera. Więcej informacji znajdziesz w sekcji Wymagania wstępne w przewodniku Rejestrowanie konta dewelopera.

Najważniejsze zasady i ograniczenia

Planując zmiany w projektach w chmurze Google Cloud, pamiętaj o tych zasadach:

  • Rejestracja projektu w relacji jeden do wielu: do jednego głównego konta Merchant Center można jednocześnie zarejestrować kilka projektów Google Cloud. Każdy projekt w chmurze Google Cloud może być jednak w danym momencie zarejestrowany tylko na jednym głównym koncie Merchant Center. Próba zarejestrowania projektu, który jest już połączony z innym kontem Merchant Center, spowoduje zwrócenie błędu ALREADY_EXISTS (409 Conflict) z przyczyną DUPLICATE_PROJECT_REGISTRATION.
  • Prywatność właściciela projektu: ze względów bezpieczeństwa i ochrony prywatności zespół pomocy Google Shopping i Merchant API nie może ujawnić adresów e-mail właściciela ani administratora projektu w chmurze Google. Jeśli utracisz dostęp do projektu, skontaktuj się z zespołem pomocy Google Cloud.
  • Rozszerzenia wyłączające Content API for Shopping są powiązane z projektem: jeśli otrzymasz zgodę na rozszerzony dostęp do Content API for Shopping, rozszerzenie będzie dotyczyć tylko konkretnego identyfikatora projektu Google Cloud przesłanego w Twojej prośbie. Rozszerzenia nie są automatycznie przenoszone do nowych projektów Google Cloud.

Zmiana identyfikatora projektu Google Cloud na koncie Merchant API

Jeśli używasz już Merchant API i musisz przełączyć integrację na nowy projekt w chmurze Google (np. z powodu restrukturyzacji organizacyjnej, rotacji danych logowania lub utraty dostępu administracyjnego do starszego projektu), możesz przenieść projekty bez przestoju. Konto Merchant Center obsługuje jednocześnie kilka zarejestrowanych projektów Google Cloud, więc możesz zarejestrować nowy projekt, zanim wycofasz stary.

Krok 1. Utwórz i skonfiguruj nowy projekt Google Cloud

  1. Utwórz nowy projekt w konsoli Google Cloud. Szczegółowe instrukcje znajdziesz w artykule Tworzenie projektu w chmurze Google Cloud.
  2. Włącz Merchant API (merchantapi.googleapis.com) w nowym projekcie. Zapoznaj się z sekcją Włączanie Merchant API w artykule Tworzenie projektu w chmurze Google Cloud.
  3. Utwórz dane logowania (konto usługi lub identyfikator klienta OAuth 2.0) w nowym projekcie Google Cloud.
  4. Dodaj adres e-mail uwierzytelniania (np. nowy adres e-mail konta usługi) jako użytkownika z rolą ADMIN na swoim głównym koncie Merchant Center.

Krok 2. Zarejestruj nowy projekt Google Cloud

Uwierzytelnij się za pomocą danych logowania z nowego projektu Google Cloud i wywołaj metodę accounts.developerRegistration.registerGcp , aby połączyć nowy projekt z głównym kontem Merchant Center. Szczegółowe instrukcje znajdziesz w sekcji Wykonanie wywołania rejestracyjnego w przewodniku Rejestrowanie konta dewelopera.

Krok 3. Sprawdź zarejestrowane projekty Google Cloud

Aby potwierdzić, że zarówno dotychczasowy, jak i nowy projekt Google Cloud są połączone z Twoim kontem Merchant Center, wywołaj accounts.developerRegistration.getDeveloperRegistration metodę:

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

Zastąp te elementy:

  • ACCOUNT_ID: identyfikator w Merchant Center
  • ACCESS_TOKEN: token autoryzacji do wywołania interfejsu API

Odpowiedź zwraca zasób DeveloperRegistration z numerycznymi identyfikatorami wszystkich połączonych projektów w chmurze Google Cloud w polu gcpIds:

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

Możesz też sprawdzić, na którym koncie Merchant Center zarejestrowany jest wywołujący projekt w chmurze Google, wywołując accounts.developerRegistration.getAccountForGcpRegistration metodę:

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

Zastąp te elementy:

  • ACCESS_TOKEN: token autoryzacji wygenerowany na podstawie danych logowania z projektu w chmurze Google Cloud, który chcesz sprawdzić

Krok 4. Przełącz ruch i wyrejestruj stary projekt Google Cloud

  1. Zaktualizuj konfigurację aplikacji, aby używać danych logowania z nowego projektu Google Cloud. Ponieważ oba projekty są zarejestrowane, Twoje obciążenia przejdą bez zakłóceń.
  2. Gdy cały ruch będzie korzystać z nowego projektu, możesz opcjonalnie usunąć link do starego projektu, uwierzytelniając się za pomocą danych logowania starego projektu Google Cloud i wywołując accounts.developerRegistration.unregisterGcp metodę:
POST https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp
Content-Type: application/json
Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN

Zastąp te elementy:

  • ACCOUNT_ID: identyfikator w Merchant Center
  • OLD_PROJECT_ACCESS_TOKEN: token autoryzacji ze starego projektu w chmurze Google do wywołania interfejsu API

Java

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"

Ponowne przypisanie zarejestrowanego projektu Google Cloud do innego konta Merchant Center

Projekt Google Cloud może być zarejestrowany tylko na jednym głównym koncie Merchant Center naraz. Aby ponownie przypisać istniejący projekt z jednego konta Merchant Center (OLD_ACCOUNT_ID) do innego (NEW_ACCOUNT_ID), wykonaj te czynności. Wskazówki dotyczące wyboru konta Merchant Center, na którym chcesz zarejestrować projekt, znajdziesz w sekcji Ważne uwagi:

  1. Uwierzytelnij się za pomocą danych logowania z projektu w chmurze Google Cloud, który ma dostęp do OLD_ACCOUNT_ID i wywołaj metodę unregisterGcp w przypadku accounts/OLD_ACCOUNT_ID/developerRegistration.
  2. Sprawdź, czy tożsamość uwierzytelniająca ma rolę ADMIN w przypadku NEW_ACCOUNT_ID oraz czy NEW_ACCOUNT_ID ma zweryfikowaną witrynę.
  3. Wywołaj metodę registerGcp w przypadku accounts/NEW_ACCOUNT_ID/developerRegistration, używając danych logowania z tego samego projektu Google Cloud. Jeśli NEW_ACCOUNT_ID nie ma jeszcze użytkownika z rolą API_DEVELOPER, przekaż prawidłowy adres e-mail użytkownika w polu żądania developerEmail. Adresów e-mail kont usługi kończących się na .gserviceaccount.com nie można używać jako developerEmail.

Przenoszenie projektów Google Cloud podczas migracji z Content API for Shopping

Podczas migracji z Content API for Shopping do Merchant API możesz napotkać ograniczenia dostępu do starszego projektu Google Cloud. Może się tak zdarzyć np. wtedy, gdy pierwotne klucze API zostały skonfigurowane bezpośrednio za pomocą starszego procesu uwierzytelniania w Merchant Center lub gdy pierwotny właściciel projektu opuścił Twoją organizację.

W zależności od tego, czy chcesz zachować dotychczasowy projekt, czy używać nowego projektu na potrzeby Merchant API, zachowując Content API for Shopping w starym projekcie, wybierz jedną z tych 2 opcji.

Wybierz strategię projektu migracji

Scenariusz Czy wymagany jest dostęp administracyjny do starego projektu? Interfejsy API do włączenia Czy w nowym projekcie wymagane jest rozszerzenie Content API for Shopping?
Opcja 1. Zachowaj dotychczasowy projekt Tak (lub odzyskaj dostęp za pomocą zespołu pomocy Google Cloud) Włącz Merchant API w dotychczasowym projekcie (Content API for Shopping jest już włączony) Nie (dotychczasowe rozszerzenie w przypadku starego identyfikatora projektu pozostaje ważne)
Opcja 2. Zachowaj stary projekt na potrzeby Content API for Shopping i używaj nowego projektu na potrzeby Merchant API Nie Włącz Merchant API w nowym projekcie (Content API for Shopping pozostaw włączony w starym projekcie) Nie (stary projekt zachowuje swoje rozszerzenie, a nowy projekt wywołuje tylko Merchant API)

Opcja 1. Zachowaj dotychczasowy projekt w chmurze Google Cloud

Wybierz tę opcję, jeśli chcesz używać dotychczasowego projektu Google Cloud zarówno na potrzeby Content API for Shopping, jak i Merchant API.

Zanim zaczniesz, sprawdź lub odzyskaj dostęp do dotychczasowego projektu. Zaloguj się w konsoli Google Cloud i sprawdź, czy Twoje konto ma którąkolwiek z tych ról w dotychczasowym projekcie:

  • Właściciel (roles/owner),
  • Edytujący (roles/editor)
  • Administrator korzystania z usług (roles/serviceusage.serviceUsageAdmin)
  1. Włącz Merchant API: włącz merchantapi.googleapis.com w bibliotece Google Cloud API lub za pomocą polecenia gcloud. Szczegółowe instrukcje znajdziesz w artykule Konfigurowanie uwierzytelniania interfejsu API z poziomu Merchant Center.
  2. Zarejestruj projekt Google Cloud w Merchant Center: wykonaj czynności opisane w przewodniku Rejestrowanie konta dewelopera , aby autoryzować żądania z dotychczasowego projektu w chmurze, i wywołaj metodę registerGcp , aby połączyć dotychczasowy projekt Google Cloud z głównym kontem Merchant Center. Dotychczasowe klucze konta usługi i zatwierdzone rozszerzenie Content API for Shopping będą nadal działać bez zmian.

Opcja 2. Używaj starego projektu w chmurze Google na potrzeby Content API for Shopping i nowego projektu na potrzeby Merchant API

Wybierz tę opcję, jeśli starsza integracja z Content API for Shopping działa już z prawidłowymi danymi logowania i zatwierdzonym rozszerzeniem w starym projekcie w chmurze Google, a nową integrację z Merchant API chcesz utworzyć w osobnym, dedykowanym projekcie w chmurze Google:

  1. Zachowaj integrację z Content API for Shopping w starym projekcie: pozostaw dotychczasowe procesy i dane logowania Content API for Shopping działające w starym projekcie Google Cloud. Jeśli Twoja prośba o rozszerzenie w przypadku starego identyfikatora projektu została zatwierdzona, dotychczasowa integracja z Content API for Shopping będzie nadal działać do przedłużonego terminu.
  2. Utwórz nowy projekt Google Cloud wyłącznie na potrzeby Merchant API: utwórz nowy projekt Google Cloud, włącz merchantapi.googleapis.com i utwórz dane logowania (konto usługi lub identyfikator klienta OAuth 2.0) na potrzeby nowych obciążeń Merchant API.
  3. Zarejestruj nowy projekt: wykonaj czynności opisane w Rejestrowanie konta dewelopera, aby autoryzować żądania z nowego projektu, i wywołaj metodę registerGcp z prawidłowym adresem e-mail kontaktu dewelopera. Adresów e-mail kont usługi (kończących się na .gserviceaccount.com) nie można używać jako developerEmail.
  4. Migruj obciążenia stopniowo: stopniowo przenoś wywołania interfejsu API ze starego projektu Content API for Shopping do nowego projektu Merchant API, przed planowaną datą wyłączenia Content API for Shopping (lub przed wygaśnięciem zatwierdzonego rozszerzenia) i wycofaj stary projekt po zakończeniu migracji.

Przypadek specjalny: utrata dostępu do starego projektu w chmurze Google Cloud przed zakończeniem migracji

Content API for Shopping jest wycofywany, dlatego nie jest już dostępny w bibliotece Google Cloud API i nie można go włączyć w nowo utworzonych projektach w chmurze Google. W związku z tym nie możesz samodzielnie przenieść dotychczasowych obciążeń Content API for Shopping do nowego projektu Google Cloud.

Jeśli nie możesz już wykonywać wywołań Content API for Shopping ze starego projektu (np. z powodu cofnięcia danych logowania lub niemożliwego do odzyskania dostępu do projektu):

  1. skontaktuj się z zespołem pomocy Google Cloud aby odzyskać dostęp do dotychczasowego projektu Google Cloud (opcja 1), lub
  2. postępuj zgodnie z instrukcjami w opcji 2, aby utworzyć i zarejestrować nowy projekt w chmurze Google Cloud oraz przenieść obciążenia, których dotyczy problem, bezpośrednio do Merchant API. Jeśli napotkasz poważny problem blokujący migrację, skontaktuj się z zespołem pomocy Merchant API.

Dalsze kroki