Gerenciar e fazer a transição de projetos do Google Cloud

Para usar a API Merchant, é necessário vincular seu projeto do Google Cloud à conta principal do Merchant Center pelo registro de desenvolvedor. Ao longo do ciclo de vida da integração, talvez seja necessário mudar o ID do projeto do Google Cloud associado à sua conta do Merchant Center, gerenciar vários projetos em ambientes diferentes ou fazer a transição de projetos ao migrar da API Content for Shopping.

Neste guia, você vai aprender a:

  • Mudar ou alternar o ID do projeto do Google Cloud para uma integração da API Merchant sem tempo de inatividade.
  • Cancelar o registro de um projeto do Google Cloud em uma conta do Merchant Center e registrá-lo em outra.
  • Escolher e executar a estratégia de transição de projeto na nuvem do Google Cloud certa se você estiver migrando da API Content for Shopping para a API Merchant.

Pré-requisitos

Antes de gerenciar ou fazer a transição de projetos na nuvem do Google Cloud, verifique se você atende aos pré-requisitos de registro de desenvolvedor. Para mais detalhes, consulte a seção Pré-requisitos do guia Fazer o registro de desenvolvedor.

Regras e limitações importantes

Ao planejar mudanças nos seus projetos do Google Cloud, tenha em mente as seguintes regras:

  • Registro de projeto um para muitos:uma única conta principal do Merchant Center pode ter vários projetos do Google Cloud registrados nela simultaneamente. No entanto, cada projeto do Google Cloud só pode ser registrado em uma conta principal do Merchant Center por vez. A tentativa de registrar um projeto que já está vinculado a outra conta do Merchant Center retorna um erro ALREADY_EXISTS (409 Conflict) com o motivo DUPLICATE_PROJECT_REGISTRATION.
  • Privacidade da propriedade do projeto:por motivos de segurança e privacidade, o suporte do Google Shopping e da API Merchant não pode divulgar os endereços de e-mail do proprietário ou administrador de um projeto do Google Cloud. Se você perder o acesso a um projeto, entre em contato com o suporte do Google Cloud.
  • As extensões de encerramento da API Content for Shopping são específicas do projeto:se você recebeu uma aprovação de acesso estendido para a API Content for Shopping, essa extensão se aplica apenas ao ID do projeto do Google Cloud específico enviado na sua solicitação. As extensões não são transferidas automaticamente para novos projetos do Google Cloud.

Mudar o ID do projeto do Google Cloud para uma conta da API Merchant

Se você já usa a API Merchant e precisa mudar sua integração para um novo projeto do Google Cloud, por exemplo, devido a uma reestruturação organizacional, políticas de rotação de credenciais ou perda de acesso administrativo a um projeto mais antigo, é possível fazer a transição de projetos sem tempo de inatividade. Como uma conta do Merchant Center oferece suporte a vários projetos do Google Cloud registrados simultaneamente, você pode registrar o novo projeto antes de desativar o antigo.

Etapa 1: criar e configurar o novo projeto do Google Cloud

  1. Crie um novo projeto no console do Google Cloud. Para instruções detalhadas, consulte Criar um projeto do Google Cloud.
  2. Ative a API Merchant (merchantapi.googleapis.com) no novo projeto. Consulte a seção Ativar a API Merchant em Criar um projeto do Google Cloud.
  3. Crie credenciais de autenticação (uma conta de serviço ou um ID do cliente OAuth 2.0) no novo projeto do Google Cloud.
  4. Adicione o endereço de e-mail de autenticação (como o novo e-mail da conta de serviço) como um usuário com a função ADMIN na sua conta principal do Merchant Center.

Etapa 2: registrar o novo projeto do Google Cloud

Autentique usando as credenciais do novo projeto na nuvem do Google Cloud e chame o accounts.developerRegistration.registerGcp método para vincular o novo projeto à sua conta principal do Merchant Center. Para instruções detalhadas, consulte a seção Fazer a chamada de registro em Fazer o registro de desenvolvedor.

Etapa 3: verificar os projetos do Google Cloud registrados

Para confirmar que os projetos do Google Cloud atuais e novos estão vinculados à sua conta do Merchant Center, chame o accounts.developerRegistration.getDeveloperRegistration método:

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

Substitua:

  • ACCOUNT_ID: seu ID do Merchant Center
  • ACCESS_TOKEN: o token de autorização para fazer a chamada de API

A resposta retorna o DeveloperRegistration recurso com os números do projeto na nuvem do Google Cloud de todos os projetos vinculados no campo gcpIds:

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

Também é possível verificar a conta do Merchant Center em que o projeto na nuvem do Google Cloud de chamada está registrado chamando o accounts.developerRegistration.getAccountForGcpRegistration método:

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

Substitua:

  • ACCESS_TOKEN: o token de autorização gerado usando credenciais do projeto na nuvem do Google Cloud que você quer verificar

Etapa 4: mudar o tráfego e cancelar o registro do projeto do Google Cloud antigo

  1. Atualize a configuração do aplicativo para usar as credenciais do novo projeto do Google Cloud. Como os dois projetos estão registrados, as cargas de trabalho fazem a transição sem interrupção.
  2. Depois que todo o tráfego usar o novo projeto, você poderá remover o link do projeto antigo autenticando com as credenciais do antigo projeto do Google Cloud e chamando o accounts.developerRegistration.unregisterGcp método:
POST https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp
Content-Type: application/json
Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN

Substitua:

  • ACCOUNT_ID: seu ID do Merchant Center
  • OLD_PROJECT_ACCESS_TOKEN: o token de autorização do antigo projeto na nuvem do Google Cloud para fazer a chamada de 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"

Reatribuir um projeto do Google Cloud registrado a uma conta diferente do Merchant Center

Como um projeto na nuvem do Google Cloud só pode ser registrado em uma conta principal do Merchant Center por vez, siga estas etapas para reatribuir um projeto de uma conta do Merchant Center (OLD_ACCOUNT_ID) para outra (NEW_ACCOUNT_ID). Para diretrizes sobre como escolher a conta do Merchant Center em que registrar seu projeto, consulte Considerações importantes:

  1. Autentique usando as credenciais do projeto na nuvem do Google Cloud que têm acesso a OLD_ACCOUNT_ID e chame unregisterGcp em accounts/OLD_ACCOUNT_ID/developerRegistration.
  2. Verifique se a identidade de autenticação tem a função ADMIN em NEW_ACCOUNT_ID e se NEW_ACCOUNT_ID tem um site verificado.
  3. Chame registerGcp em accounts/NEW_ACCOUNT_ID/developerRegistration usando credenciais do mesmo projeto na nuvem do Google Cloud. Se NEW_ACCOUNT_ID ainda não tiver um usuário com a função API_DEVELOPER, transmita um e-mail de usuário válido no campo de solicitação developerEmail. Os e-mails de contas de serviço que terminam em .gserviceaccount.com não podem ser usados como developerEmail.

Fazer a transição de projetos na nuvem do Google Cloud ao migrar da API Content for Shopping

Ao migrar da API Content for Shopping para a API Merchant, você pode encontrar limitações de acesso no seu projeto legado do Google Cloud, por exemplo, se as chaves de API originais foram configuradas diretamente pelo fluxo de trabalho de autenticação do Merchant Center legado ou se o proprietário original do projeto deixou sua organização.

Dependendo se você quer manter o projeto atual ou usar um novo projeto para a API Merchant, mantendo a API Content for Shopping no projeto antigo, escolha uma das duas opções a seguir.

Escolher a estratégia de projeto de migração

Cenário É necessário acesso de administrador ao projeto antigo? APIs a serem ativadas A extensão da API Content for Shopping é necessária no novo projeto?
Opção 1: manter o projeto atual Sim (ou recuperar pelo suporte do Google Cloud) Ativar a API Merchant no projeto atual (a API Content for Shopping já está ativada) Não (a extensão atual no ID do projeto antigo permanece válida)
Opção 2: manter o projeto antigo para a API Content for Shopping e usar um novo projeto para a API Merchant Não Ativar a API Merchant no projeto novo (manter a API Content for Shopping ativada no projeto antigo) Não (o projeto antigo mantém a extensão; o novo projeto chama apenas a API Merchant)

Opção 1: manter o projeto atual do Google Cloud

Escolha essa opção se quiser usar o projeto atual do Google Cloud para a API Content for Shopping e a API Merchant.

Antes de começar, verifique ou recupere o acesso ao projeto atual. Faça login no console do Google Cloud e confirme se sua conta tem qualquer uma das seguintes funções no projeto atual:

  • Proprietário (roles/owner),
  • Editor (roles/editor)
  • Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin)
  1. Ativar a API Merchant: ative merchantapi.googleapis.com na biblioteca de APIs do Google Cloud ou com o comando gcloud. Para instruções detalhadas, consulte Configurar a autenticação da API no Merchant Center.
  2. Registrar o projeto do Google Cloud no Merchant Center: Siga as etapas do guia Fazer o registro de desenvolvedor para autorizar solicitações do projeto atual e chame o método registerGcp para vincular o projeto do Google Cloud atual à sua conta principal do Merchant Center. As chaves de conta de serviço atuais e a extensão aprovada da API Content for Shopping continuam funcionando sem mudanças.

Opção 2: usar o projeto antigo do Google Cloud para a API Content for Shopping e um novo projeto para a API Merchant

Escolha essa opção se a integração legada da API Content for Shopping já estiver em execução com credenciais válidas e uma extensão aprovada no projeto antigo do Google Cloud e você quiser criar sua nova integração da API Merchant em um projeto na nuvem separado e dedicado:

  1. Manter a integração da API Content for Shopping no projeto antigo:deixe os fluxos de trabalho e as credenciais da API Content for Shopping em execução no projeto antigo do Google Cloud. Se a solicitação de extensão para o ID do projeto antigo foi aprovada, a integração atual da API Content for Shopping continua funcionando até o prazo estendido.
  2. Criar um novo projeto do Google Cloud exclusivamente para a API Merchant:crie um novo projeto do Google Cloud, ative merchantapi.googleapis.com e crie credenciais (uma conta de serviço ou um ID do cliente OAuth 2.0) para suas novas cargas de trabalho da API Merchant.
  3. Registrar o novo projeto: siga as etapas em Fazer o registro de desenvolvedor para autorizar solicitações do novo projeto e chame o registerGcp método com um e-mail de contato de desenvolvedor válido. Os e-mails de contas de serviço (que terminam em .gserviceaccount.com) não podem ser usados como developerEmail.
  4. Migrar cargas de trabalho de forma incremental: transfira as chamadas de API do projeto antigo da API Content for Shopping para o novo projeto da API Merchant gradualmente, antes da data de descontinuação programada da API Content for Shopping (ou antes da expiração da extensão aprovada), e desative o projeto antigo quando a migração for concluída.

Caso especial: perda de acesso ao projeto antigo do Google Cloud antes de concluir a migração

Como a API Content for Shopping foi descontinuada, ela não está mais listada na biblioteca de APIs do Google Cloud e não pode ser ativada em projetos do Google Cloud recém-criados. Como resultado, não é possível mover cargas de trabalho da API Content for Shopping para um novo projeto do Google Cloud por conta própria.

Se você não puder mais fazer chamadas da API Content for Shopping no projeto antigo (por exemplo, devido a credenciais revogadas ou acesso ao projeto irrecuperável):

  1. Entre em contato com o Suporte do Google Cloud para recuperar o acesso ao projeto na nuvem atual do Google Cloud (opção 1) ou
  2. Siga a opção 2 para criar e registrar um novo projeto na nuvem do Google Cloud e migrar os fluxos de trabalho afetados diretamente para a API Merchant. Se você encontrar um bloqueador de migração crítico, entre em contato com o suporte da API Merchant.

Próximas etapas