Importante: a partir do início de novembro de 2024, o acesso aos intervalos de armazenamento do Ad Manager para a Transferência de dados vai ser migrado dos Grupos do Google para uma nova permissão de função do usuário do Ad Manager.
Para saber mais sobre o cronograma da migração e as próximas etapas, acesse Migrar o acesso à Transferência de dados dos Grupos do Google para as permissões do Ad Manager.
O Google Cloud Storage é um produto separado do Google que o Ad Manager usa como um repositório de dados para relatórios da Transferência de dados e IDs de cookies de uploads em lote de público-alvo.
Métodos
Há três maneiras de acessar os intervalos de armazenamento em nuvem do Ad Manager. Elas estão listadas abaixo por ordem de complexidade:
- Na Web: acesse
https://console.developers.google.com/storage/gdfp-[Ad Manager network code]
. - A gsutil é uma ferramenta de linha de comando baseada em Python que fornece comandos do tipo Unix para interação com o intervalo de armazenamento. A autenticação do intervalo é concedida e administrada automaticamente.
- A Google Cloud Storage API é uma API com recursos completos para o gerenciamento do intervalo de armazenamento, disponível por meio das interfaces da Web RESTful JSON ou RESTful XML. As bibliotecas de clientes da API estão disponíveis em muitos ambientes de programação conhecidos, incluindo Java, JavaScript, Python e Objective-C. Isso pode ser útil se for necessário gerenciar os intervalos de armazenamento programaticamente para integrar com um app do Google App Engine ou um app da Web do Java.
Este artigo fornece detalhes sobre a API Google Cloud Storage. O acesso à Web e gsutil são mais fáceis de gerenciar, por isso recomendamos explorar esses métodos primeiro. Eles estão totalmente documentados no site para desenvolvedores do Google Cloud Storage.
Gerenciar o acesso aos seus intervalos de armazenamento do Ad Manager
Novo processo (disponível em novembro de 2024)
A partir de novembro de 2024, você poderá migrar os usuários que precisam de acesso aos intervalos de armazenamento da Transferência de dados dos Grupos do Google para uma nova permissão de função do usuário do Ad Manager. Por padrão, os usuários com a função de administrador podem acessar os intervalos de armazenamento. Para outros usuários, você pode adicionar eles a uma função com a nova permissão "Ver intervalos de transferência de dados". Saiba mais sobre a migração.
Processo atual (disponível até janeiro de 2025)
Observação: recomendamos que você revise as fases de migração e tome as medidas necessárias antes de janeiro de 2025.
Os intervalos de armazenamento usados pelo Ad Manager estão incluídos em um projeto de armazenamento em nuvem de propriedade do Google. Os intervalos de armazenamento do Ad Manager não aparecem na sua própria lista de projetos no Google Developers Console.
É necessário trabalhar com o representante do Google para configurar os recursos que dependem dos intervalos de armazenamento do Ad Manager. Ele vai enviar um grupo do Google para você gerenciar os intervalos de armazenamento.
Se você for administrador de um grupo do G Suite, envie o nome desse grupo ao representante como parte do processo de ativação do recurso. Ele trabalhará com você para ativar qualquer recurso que use os intervalos de armazenamento do Ad Manager utilizando seu grupo existente.
Se você gerenciar mais de uma rede do Ad Manager com acesso à Transferência de dados, informe seu representante do Google para que o gerenciamento de rede possa ser consolidado. Um grupo será usado para gerenciar todos os intervalos da Transferência de dados nas suas redes.
Usar a API Google Cloud Storage
Se você acredita que o acesso à API é o mais indicado para suas necessidades, recomendamos a configuração de uma conta de serviço do Google Cloud Storage.
Configurar uma conta de serviço do Google Cloud Storage
Ao acessar o intervalo de armazenamento pela API, recomendamos configurar uma conta de serviço específica em vez de acessar com uma conta de usuário. As contas de serviço simplificam o desenvolvimento do aplicativo usando uma chave privada para autenticação em vez de um token OAuth gerado de maneira dinâmica. Para configurar uma conta de serviço, faça o seguinte:
-
Acesse o Google Developers Console.
-
Crie um novo projeto ou selecione um existente para ser o pai do seu aplicativo e clique nele.
-
(Opcional) Se você quiser copiar arquivos do intervalo de armazenamento do Ad Manager para sua conta do Google Cloud Storage, clique em Faturamento e configurações para adicionar uma origem do faturamento ao seu projeto.
-
Crie um novo ID do cliente:
-
Clique em APIs e serviços > Credenciais.
-
Clique em Criar novo ID do cliente.
-
Selecione Conta de serviço como o tipo do seu aplicativo e depois clique em Criar ID do cliente.
-
O endereço de e-mail gerado tem o formato
[unique-id]@developer.gserviceagccount.com
. Copie e salve o endereço para adicioná-lo ao seu Grupo do Google. -
Clique em Gerar nova chave P12. O arquivo é salvo no seu computador. Use essa chave nos aplicativos que você desenvolver para acessar a API, como exibido no exemplo de código abaixo.
-
- Adicione o endereço de e-mail ao Grupo do Google que você criou para gerenciar o acesso aos seus intervalos de armazenamento do Ad Manager. Clique em Adicionar membros diretamente em vez de "Convidar" para adicionar a conta de serviço. Se você não tiver acesso a isso, peça que o administrador do Grupo do Google adicione o endereço.
O Google fornece amostras e bibliotecas de códigos do Google Cloud Storage. O seguinte exemplo de Java para a leitura de um arquivo de intervalo de armazenamento em nuvem do Ad Manager mostra como os componentes definidos ao configurar a conta de serviço podem afetar seu código:
-
Nome do projeto: nome do projeto do Google Cloud Storage.
-
Endereço de e-mail da conta de serviço: endereço de e-mail que você gerou.
-
Arquivo-chave .p12: é o arquivo que você transferiu.
-
Nome do intervalo: o Google fornece esse nome quando você ativa um recurso que usa intervalos de armazenamento em nuvem do Ad Manager.
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.security.GeneralSecurityException; import java.util.Collections; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.storage.Storage; import com.google.api.services.storage.model.StorageObject; public class GcsApiTest { /** * O nome do projeto onde a conta de serviço foi criada. * * Esta informação é exibida no Google Developers Console. */ private static final String PROJECT_NAME = "nome de projeto"; /** * Endereço de e-mail da conta de serviço do desenvolvedor. * * Este e-mail é gerado durante a criação de um código de cliente de conta de serviço em seu * Google Developers Console e pode ser recuperado na página * de credenciais. Este e-mail também deve ser adicionado ao Grupo do Google usado para controlar * o acesso ao intervalo de armazenamento. */ private static final String SERVICE_ACCOUNT_EMAIL = "endereço de e-mail da conta de serviço"; /** * Intervalo a ser usado em operações de armazenamento. * * O nome deste intervalo é fornecido a você por seu gerente de * contas. Ele deve ser semelhante a "gdfp-12345678" ou * "gdfp_cookieupload_12345678", dependendo do complemento do Ad Manager em uso. */ private static final String BUCKET_NAME = "nome do intervalo"; /** * Escopo de leitura/gravação do Google Cloud Storage OAuth 2.0. Isso deve * corresponder aos direitos de acesso que seu Grupo do Google detém para o * intervalo, e não é possível solicitar direitos de acesso que não tenham sido concedidos ao * Grupo (que podem ser read_only). */ private static final String STORAGE_SCOPE = "https://www.googleapis.com/auth/devstorage.read_write"; /** * Caminho para o arquivo key.p12 que fornece acesso ao intervalo. * * Este arquivo é criado durante a criação do código de cliente do serviço. Se você não * tem este arquivo, será preciso gerar uma chave p12 de cliente novo no * Google Developers Console. */ private static final String KEY_P12 = "caminho para arquivo-chave .p12"; /** Transporte HTTP. */ private HttpTransport httpTransport; private Storage storage; // construtor, configura credenciais e objetos de armazenamento public GcsApiTest() { File p12File = new File(KEY_P12); try { httpTransport = GoogleNetHttpTransport.newTrustedTransport(); GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(JacksonFactory.getDefaultInstance()) .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) .setServiceAccountScopes( Collections.singleton(STORAGE_SCOPE)) .setServiceAccountPrivateKeyFromP12File(p12File).build(); storage = new Storage.Builder(httpTransport, JacksonFactory.getDefaultInstance(), credential) .setApplicationName(PROJECT_NAME).build(); } catch (GeneralSecurityException | IOException e1) { e1.printStackTrace(); System.exit(1); } } /** * Método para retornar o nome do primeiro arquivo no intervalo. * * @return para retornar o nome do arquivo ou null se o intervalo estiver vazio * @throws IOException */ public String GetFirstFile() throws IOException { Storage.Objects.List listObjects = storage.objects().list(BUCKET_NAME); listObjects.setMaxResults(5L); com.google.api.services.storage.model.Objects objects = listObjects .execute(); // intervalo vazio? if (null == objects.getItems() || objects.getItems().isEmpty()) { System.out.println("Bucket \"" + BUCKET_NAME + "\" empty or invalid.") return null; } StorageObject object = objects.getItems().get(0); System.out.println("First object in bucket: \"" + object.getName() + "\"."); return object.getName(); } /** * Método para fazer o download do arquivo especificado no intervalo de armazenamento * * @param filename * Nome do arquivo que deve ser obtido por download. * @throws IOException */ public void DownloadFile(String filename) throws IOException { Storage.Objects.Get getObject = storage.objects().get(BUCKET_NAME, filename); OutputStream os = new FileOutputStream(filename, true); getObject.getMediaHttpDownloader().setDirectDownloadEnabled(true); getObject.executeMediaAndDownloadTo(os); System.out.println("File \"" + filename + "\" downloaded."); } /** * Método principal para executar os vários testes. * * @param args */ public static void main(String[] args) { GcsApiTest gcsApiTest = new GcsApiTest(); try { String filename = gcsApiTest.GetFirstFile(); gcsApiTest.DownloadFile(filename); } catch (IOException e) { System.out.println(e.getMessage()); } } }
Conexões simultâneas e de controle
Não há limite predefinido de conexões simultâneas. Para evitar isso, o Google controla as solicitações de chamada da Transferência de dados.