Notificación

Solo está disponible en Google Ad Manager 360.

Acceda a buckets de 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 subidos por lotes.

El objetivo de este artículo es ayudarlo 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 para desarrolladores de ese producto.

Métodos

Estas son las tres maneras de acceder a los buckets 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 bucket de almacenamiento. La autenticación del bucket se abstrae y se controla automáticamente.
  • La API de Google Cloud Storage es una API completa para controlar el bucket de almacenamiento, que está disponible mediante las 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 buckets 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 que explore 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 los buckets de almacenamiento de Ad Manager

Los buckets 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.

Para configurar las funciones que dependen de los buckets de almacenamiento de Ad Manager, deberá trabajar con su representante de Google. Este le proporcionará un grupo de Google que usted podrá usar para administrar sus buckets de almacenamiento.

Si usted es el administrador de un grupo de Google de G Suite existente, puede darle el nombre de ese grupo a su representante como parte del proceso de activación de funciones. El representante trabajará con usted y usará el grupo existente para activar las funciones que usen buckets de almacenamiento de Ad Manager.

Si administra más de una red de Ad Manager con acceso a Transferencia de datos, debe hablarlo con su representante de Google para fusionar la administración de las redes. Se usará un grupo para administrar todos los buckets de Transferencia de datos de sus redes.

Los grupos de Google que no forman parte de G Suite no se pueden usar para administrar los buckets de almacenamiento de Ad Manager.

Cómo usar la API de Google Cloud Storage

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

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

A la hora de acceder a un bucket 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 bucket de almacenamiento de Ad Manager a 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 que se genere tendrá el formato [unique-id]@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 buckets 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, pídale al administrador del grupo de Google que agregue la dirección en su nombre. 
Ejemplo de código

Google cuenta con muestras de códigos y bibliotecas de Google Cloud Storage. El siguiente ejemplo Java de lectura de un archivo de un bucket 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 bucket: Google proporciona este nombre cuando activa una función que usa buckets 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 {
    /**
     * The name of the project under which the service account was created.
     * 
     * This information is displayed under the Google Developers Console.
     */
    private static final String PROJECT_NAME = "project name";

    /**
     * Developer Email address of the service account.
     * 
     * This email is generated upon creating a Service Account Client ID in your
     * Google Developers Console, and can be retrieved from the Credentials
     * page. This email must also be added to the Google Group used to control
     * access to the storage bucket.
     */
    private static final String SERVICE_ACCOUNT_EMAIL = "service account email address";

    /**
     * Bucket to use for storage operations.
     * 
     * The name of this bucket was provided to you by your Account
     * Manager. It likely has a name similar to "gdfp-12345678" or
     * "gdfp_cookieupload_12345678", depending on the Ad Manager add-on you're using.
     */
    private static final String BUCKET_NAME = "bucket name";

    /**
     * Google Cloud Storage OAuth 2.0 scope for read/write. This should
     * correspond to the access rights that your Google Group has for the
     * bucket, and you cannot request access rights that are not granted to the
     * Group (which may be read_only).
     */
    private static final String STORAGE_SCOPE = 
        "https://www.googleapis.com/auth/devstorage.read_write";

    /**
     * Path to the key.p12 file providing access to the bucket.
     * 
     * This file is created when the service client ID is created. If you don't
     * have this file, you will need to generate a new client p12 key from the
     * Google Developers Console.
     */
    private static final String KEY_P12 = "path to .p12 key file";

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

    // constructor, sets up credentials and storage objects
    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);
	}
    }

    /**
     * Method to return the name of the first file in the bucket.
     * 
     * @return the name of the file, or null if the bucket is empty
     * @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();

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

    /**
     * Method to download the specified file from the storage bucket
     * 
     * @param filename
     *            Name of the file that should be downloaded.
     * @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.");
    }

    /**
     * Main method to execute the different tests.
     * 
     * @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());
	}
    }
}

Limitaciones y conexiones simultáneas

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

Consulte las noticias más recientes sobre Google Cloud Storage en la sección correspondiente del blog oficial de Google Code y publique sus preguntas en el foro de debate. Agregue los términos "Error" o "Solicitud de función" en el asunto según corresponda. Si tiene otras pregunta sobre Google Cloud Storage, consulte las Preguntas frecuentes.

¿Te resultó útil esto?

¿Cómo podemos mejorarla?
Búsqueda
Borrar búsqueda
Cerrar la búsqueda
Menú principal
8336136053420124272
true
Buscar en el Centro de asistencia
true
true
true
true
true
148
false
false