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

Para usar a API Merchant, é necessário vincular seu projeto do Google Cloud à sua conta principal do Merchant Center pelo registro de desenvolvedor. Durante o ciclo de vida da sua 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 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 inatividade.
  • Cancelar o registro de um projeto do Google Cloud em uma conta do Merchant Center e registrá-lo em outra conta do Merchant Center.
  • Escolha e execute a estratégia certa de transição do projeto na nuvem do Google Cloud 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 de pré-requisitos do guia Registrar-se como desenvolvedor.

Principais regras e limitações

Ao planejar mudanças nos projetos do Google Cloud, lembre-se das seguintes regras:

  • Registro de um para muitos projetos: uma única conta principal do Merchant Center pode ter vários projetos do Google Cloud registrados 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 desativação 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 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 de 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 sem tempo de inatividade. Como uma conta do Merchant Center é compatível com vários projetos registrados do Google Cloud simultaneamente, é possível 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 e-mail da nova conta de serviço) como um usuário com o papel ADMIN na sua conta principal do Merchant Center.

Etapa 2: registrar o novo projeto do Google Cloud

Faça a autenticação usando as credenciais do seu novo projeto do Google Cloud e chame o método accounts.developerRegistration.registerGcp 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 seus projetos na nuvem registrados do Google Cloud

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

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 recurso DeveloperRegistration com os números numéricos 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 em qual conta do Merchant Center o projeto na nuvem de chamada do Google Cloud está registrado chamando o método accounts.developerRegistration.getAccountForGcpRegistration:

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

Substitua:

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

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

  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 são transferidas sem interrupção.
  2. Depois que todo o tráfego usar o novo projeto, você poderá remover o link do projeto antigo autenticando-se com as credenciais do projeto antigo do Google Cloud e chamando o método 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

Substitua:

  • ACCOUNT_ID: seu ID do Merchant Center
  • OLD_PROJECT_ACCESS_TOKEN: o token de autorização do projeto antigo 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 registrado do Google Cloud a outra conta do Merchant Center

Como um projeto 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 saber como escolher em qual conta do Merchant Center registrar seu projeto, consulte Considerações importantes:

  1. Autentique-se 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 o papel 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 o NEW_ACCOUNT_ID ainda não tiver um usuário com o papel 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 legado do Merchant Center ou se o proprietário original do projeto saiu da sua organização.

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

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

Cenário É necessário ter acesso de administrador ao projeto antigo? APIs para ativar 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) Ative a API Merchant no projeto existente (a API Content for Shopping já está ativada) Não (a extensão atual no ID do projeto antigo continua válida)
Opção 2: manter o projeto antigo para a API Content for Shopping e usar um novo para a API Merchant Não Ative a API Merchant no novo projeto (mantenha a API Content for Shopping ativada no projeto antigo). Não (o projeto antigo mantém a extensão, e 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 seu 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 a sua conta tem qualquer um dos seguintes papéis no projeto atual:

  • Proprietário (roles/owner),
  • Editor (roles/editor)
  • Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin)
  1. Ative 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. Registre o projeto do Google Cloud no Merchant Center: siga as etapas no guia Registrar como desenvolvedor para autorizar solicitações do seu projeto atual e chame o método registerGcp para vincular o projeto do Google Cloud à 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 esta 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 seu projeto antigo do Google Cloud, e você quiser criar a nova integração da API Merchant em um projeto separado e dedicado do Google Cloud:

  1. Mantenha 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 o pedido de extensão para o ID do projeto antigo foi aprovado, sua integração atual com a API Content for Shopping vai continuar funcionando até o prazo estendido.
  2. Crie 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 ID do cliente OAuth 2.0) para suas novas cargas de trabalho da API Merchant.
  3. Registre o novo projeto: siga as etapas em Fazer o registro de desenvolvedor para autorizar solicitações do seu novo projeto e chamar o método registerGcp com um e-mail de contato de desenvolvedor válido. Os e-mails de contas de serviço (terminados em .gserviceaccount.com) não podem ser usados como developerEmail.
  4. Migre as cargas de trabalho de forma incremental: mude as chamadas de API do seu projeto antigo da API Content for Shopping para o novo projeto da API Merchant gradualmente, antes da data de desativação programada da API Content for Shopping (ou antes que a extensão aprovada expire) 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 recém-criados do Google Cloud. Por isso, não é possível mover as cargas de trabalho atuais da API Content for Shopping para um novo projeto na nuvem do Google Cloud por conta própria.

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

  1. Entre em contato com o Suporte do Google Cloud para recuperar o acesso ao seu projeto na nuvem (Opção 1) ou
  2. Siga a Opção 2 para criar e registrar um novo projeto 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