Acessar intervalos de armazenamento do Ad Manager

Como fazer download dos seus arquivos da Transferência de dados

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.

Este artigo tem o objetivo de ajudar você a usar as tecnologias padrão do Google Cloud Storage para interagir com as configurações específicas de armazenamento em nuvem do Ad Manager. Entretanto, o site do desenvolvedor do Google Cloud Storage é sua referência principal para o Google Cloud Storage.

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-[código de rede do Ad Manager].
  • 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 sistemas de programação conhecidos, incluindo Java, JavaScript, Python e Objective-C. Essa abordagem será muito útil se for preciso gerenciar os intervalos de armazenamento de maneira programática para se integrarem a um app da Web em Java ou um aplicativo Google App Engine.

Este artigo fornece detalhes sobre a Google Cloud Storage API. 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 do desenvolvedor do Google Cloud Storage.

Gerenciar o acesso aos seus intervalos de armazenamento do Ad Manager

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.

Ao trabalhar com seu representante do Google para definir os recursos que dependem de intervalos de armazenamento do Ad Manager, você precisará criar um Grupo do Google para gerenciar o acesso aos seus intervalos de armazenamento. Dependendo dos recursos que você usar, os membros terão acesso no modo somente leitura ou no leitura e escrita.

Estas instruções presumem que você será o administrador do grupo. Caso seja outra pessoa, garanta que ela siga estas instruções ao estar conectada na Conta do Google correta.

Para configurar seu Grupo do Google:

  1. Navegue até http://groups.google.com/ e siga as instruções para criar um novo grupo.

    A convenção de nomenclatura para grupos é sua, mas recomendamos incluir o nome do produto principal do Google Marketing Platform, seu código de rede e o nome da sua empresa. Por exemplo: admanager-9999-BigCompany.
  2. Adicione usuários ao Grupo do Google. Recomendamos que você use os mesmos endereços de e-mail que seus usuários usam para acessar o Ad Manager. Endereços de e-mail pessoais não são recomendados.

  3. Informe o nome do seu Grupo do Google como parte do processo de ativação do recurso. O Google trabalhará com você para ativar recursos que usem os intervalos de armazenamento do Ad Manager.

Usar a Google Cloud Storage API

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 por meio da 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:

  1. Acesse o Google Developers Console.

  2. Crie um novo projeto ou selecione um existente para ser o pai do seu aplicativo e clique nele.

  3. (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.

  4. Crie um novo ID do cliente:

    1. Clique em APIs e serviços > Credencial.

    2. Clique em Criar novo ID do cliente.

    3. Selecione Conta de serviço como o tipo do seu aplicativo e depois clique em Criar ID do cliente.

    4. O endereço de e-mail gerado tem o formato [id-único]@developer.gserviceagccount.com. Copie e salve o endereço para adicioná-lo ao seu Grupo do Google.

    5. 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.

  5. 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. 
Exemplo de código

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 no qual 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 simples, 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 simples para retornar o nome do primeiro arquivo no intervalo.
     * 
     * @return, para retornar o nome do arquivo ou null se o intervalo estiver vazio
     * @throws, para lançar 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("Intervalo \"" + NOME_INTERVALO
		    + "\" vazio ou inválido.");
	    return null;
	}

	StorageObject object = objects.getItems().get(0);
	System.out.println("Primeiro objeto no intervalo: \"" + object.getName()
		+ "\".");
	return object.getName();
    }

    /**
     * Método simples para fazer o download do arquivo especificado a partir do intervalo de armazenamento
     * 
     * @param, nome de arquivo do parâmetro
     *            Nome do arquivo que deve ser transferido.
     * @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("Arquivo \"" + nome de arquivo + "\" transferido.");
    }

    /**
     * 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.

Leia a seção Google Cloud Storage do blog oficial do Google Code para saber as últimas notícias e postar perguntas no Fórum de discussão do Google Cloud Storage. Adicione "Bug" ou "Solicitação de recurso" ao assunto. No caso de dúvidas sobre o Google Cloud Storage, veja as Perguntas frequentes do Google Cloud Storage.
Isso foi útil?
Como podemos melhorá-lo?