Cómo acceder a segmentos del almacenamiento de Ad Manager

Cómo descargar archivos de Transferencia de datos

Google Cloud Storage es un producto independiente de Google que Ad Manager usa como repositorio de datos para los informes de Transferencia de datos y los ID de cookies de público de carga por lotes.

Este artículo lo ayudará a usar las tecnologías estándar de Google Cloud Storage para integrarlas con la configuración específica de almacenamiento en la nube de Ad Manager. Sin embargo, tenga en cuenta que la principal fuente de referencia sobre Google Cloud Storage es el sitio de ese producto para desarrolladores.

Métodos

Estas son las tres maneras de acceder a los segmentos de almacenamiento en la nube de Ad Manager por orden de complejidad:

  • En la Web: Visite https://console.developers.google.com/storage/gdfp-[código de red de Ad Manager].
  • gsutil es una herramienta de línea de comandos basada en Python que incluye comandos de estilo Unix para interactuar con el segmento de almacenamiento. La autenticación del segmento se abstrae y controla automáticamente.
  • La API de Google Cloud Storage es una API completa para controlar el segmento de almacenamiento, disponible mediante interfaces web JSON o XML RESTful. Hay bibliotecas clientes de API en varios entornos de programación populares, como Java, JavaScript, Python y Objective-C. Este método es útil si necesita controlar los segmentos de almacenamiento de manera programática para integrar una aplicación de Google App Engine o una aplicación web de Java.

Si bien este artículo brinda información sobre la API de Google Cloud Storage, los accesos web y de gsutil son más fáciles de administrar. Por lo tanto, le recomendamos explorar primero esos métodos. Puede encontrar toda la documentación pertinente en el sitio para desarrolladores de Google Cloud Storage.

Cómo administrar el acceso a su segmento de almacenamiento de Ad Manager

Los segmentos de almacenamiento que usa Ad Manager están incluidos en un proyecto de almacenamiento en la nube de Google, y no se muestran en su lista de proyectos en Google Developers Console.

Cuando trabaje con su representante de Google en la configuración de funciones relacionadas con segmentos de almacenamiento de Ad Manager, deberá crear un grupo de Google para administrar sus segmentos de almacenamiento. Según las funciones que use, los miembros tendrán acceso de solo lectura o de lectura y escritura.

Estas instrucciones están destinadas al administrador del grupo. Si no es usted, asegúrese de que el administrador tenga en cuenta estos pasos cuando acceda a la cuenta de Google correspondiente.

Siga estos pasos para configurar un grupo de Google:

  1. Vaya a http://groups.google.com/ y siga las instrucciones para crear un grupo nuevo.

    Si bien puede elegir la convención de nombres para los grupos, le recomendamos incluir el nombre del producto principal de Google Marketing Platform, el ID de su red y el nombre de su empresa. Por ejemplo: admanager-9999-Granempresa.
  2. Agregue usuarios al grupo de Google. Le recomendamos usar las mismas direcciones de correo electrónico con las que los usuarios acceden a Ad Manager, y no las direcciones personales.

  3. Proporcione el nombre del grupo a Google como parte del proceso de habilitación de funciones. Google trabajará con usted para habilitar las funciones que usen los segmentos de almacenamiento de Ad Manager.

Cómo usar la API de Google Cloud Storage

Si determinó que la API de acceso es lo mejor en función de sus necesidades, le recomendamos configurar al menos una cuenta de servicio de Google Cloud Storage.

Cómo configurar una cuenta de servicio de Google Cloud Storage

Al acceder a un segmento de almacenamiento desde la API, le recomendamos configurar una cuenta de servicio, en lugar de ejecutarlo en el contexto del usuario. Las cuentas de servicio simplifican el desarrollo de aplicaciones mediante el uso de una clave privada de autenticación, en lugar de un token OAuth generado dinámicamente. Siga estos pasos para configurar una cuenta de servicio:

  1. Vaya a Google Developers Console.

  2. Cree un proyecto nuevo, o seleccione uno existente, para que sea el principal de su aplicación y haga clic en él.

  3. (Opcional) Si quiere copiar archivos del segmento de almacenamiento de su propia cuenta de Google Cloud Storage, haga clic en Facturación y configuración para agregar una fuente de facturación a su proyecto.

  4. Cree un nuevo ID de cliente:

    1. Haga clic en API y servicios > Credenciales.

    2. Haga clic en Crear nuevo ID de cliente.

    3. Seleccione Cuenta de servicio como tipo de aplicación y, luego, haga clic en Crear ID de cliente.

    4. La dirección de correo electrónico generada tendrá el formato [ID-único]@developer.gserviceagccount.com. Cópiela y guárdela para agregarla al grupo de Google.

    5. Haga clic en Generar nueva clave P12. Se guardará el archivo en su computadora. Puede usar la clave en las aplicaciones que desarrolle para acceder a la API, tal como muestra el siguiente ejemplo.

  5. Agregue la dirección de correo electrónico en el grupo de Google que creó para administrar el acceso a los segmentos de almacenamiento de Ad Manager. Haga clic en Agregar miembros en forma directa (en lugar de "invitar") para agregar la cuenta de servicio. Si no tiene acceso, solicítele al administrador del grupo de Google para agregar la dirección en su nombre. 
Ejemplo de código

Google cuenta con ejemplos de códigos y bibliotecas de Google Cloud Storage. El siguiente ejemplo Java de lectura de un archivo de un segmento de almacenamiento en la nube de Ad Manager muestra cómo los componentes que configuró con la cuenta de servicio pueden impactar en su código:

  • Nombre del proyecto: Corresponde al nombre del proyecto de Google Cloud Storage.

  • Dirección de correo electrónico de la cuenta de servicio: Corresponde a la dirección que usted generó.

  • Archivo de clave .p12: Corresponde al archivo que descargó.

  • Nombre del segmento: Google proporciona este nombre cuando habilita una función que usa segmentos de almacenamiento en la nube de 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 {
    /**
     * Corresponde al nombre del proyecto en el que se creó la cuenta de servicio.
     * 
     * Esta información está disponible en Google Developers Console.
     */
    private static final String PROJECT_NAME = "project name";

    /**
     * Corresponde a la dirección de correo electrónico de la cuenta de servicio.
     * 
     * Esta dirección de correo electrónico se genera al crear un ID de cuenta de servicio
     * en Google Developers Console y puede obtenerlo
     * en la página Credenciales. Debe agregar esta dirección de correo electrónico al grupo de Google
     * que usará para acceder al segmento de almacenamiento.
     */
    private static final String SERVICE_ACCOUNT_EMAIL = "service account email address";

    /**
     * Corresponde al segmento que se usará en las operaciones de almacenamiento.
     * 
     * Corresponde al segmento que le proporcionó
     * su administrador de cuentas. Es probable que tenga un nombre similar a "gdfp-12345678" o
     * "gdfp_cookieupload_12345678", según qué complemento de Ad Manager use.
     */
    private static final String BUCKET_NAME = "bucket name";

    /**
     * Corresponde al alcance de lectura y escritura OAuth 2.0 de Google Cloud Storage. Este valor
     * debería corresponder a los derechos de acceso que tenga el grupo de Google
     * en el segmento. No puede solicitar derechos de acceso
     *que no se hayan otorgado al grupo (que podría ser de solo lectura).
     */
    private static final String STORAGE_SCOPE = 
        "https://www.googleapis.com/auth/devstorage.read_write";

    /**
     * Corresponde a la ruta del archivo key.p12 qe brinda acceso al segmento.
     * 
     * Este archivo se genera cuando se crea el ID de cliente del servicio. Si no tiene este archivo,
     * tendrá que generar una nueva clavep12 de cliente
     * en Google Developers Console.
     */
    private static final String KEY_P12 = "path to .p12 key file";

    /** HTTP transport. */
    private HttpTransport httpTransport;
    private Storage storage;

    // constructor simple que configura credenciales y objetos de almacenamiento
    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);
	}
    }

    /**
     * Es una forma simple de mostrar el nombre del primer archivo en el segmento.
     * 
     * @muestra el nombre del archivo, o aparece en blanco si el segmento está vacío
     * @activa 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();

	// empty bucket?
	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();
    }

    /**
     * Es una forma fácil de descargar el archivo especificado del segmento de almacenamiento.
     * 
     * @param filename
     *            Corresponde al nombre del archivo que debe descargar.
     * @activa 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.");
    }

    /**
     * Corresponde al principal método de ejecución de diversas pruebas.
     * 
     * @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());
	}
    }
}

Regulación y conexiones simultáneas

No hay un límite predefinido para conexiones simultáneas. Sin embargo, para evitar los abusos, Google regula las solicitudes de Transferencia de datos obtenidas.

Consulte las noticias más recientes en la sección de Google Cloud Storage del blog oficial de Google Code y publique sus preguntas en el foro de debate de Google Cloud Storage. Agregue los términos "Error" o "Solicitud de función" en el asunto según corresponda. Para ver otras respuestas sobre Google Cloud Storage, consulte las Preguntas frecuentes.
¿Te resultó útil esto?
¿Cómo podemos mejorarla?