Importante: A principios de noviembre del 2024, el acceso a los segmentos de almacenamiento de Ad Manager de Data Transfer empezará a migrar de Grupos de Google a un nuevo permiso de rol de usuario de Ad Manager.
Para obtener más información sobre el calendario de migración y los pasos siguientes, consulta el artículo Migrar el acceso a Data Transfer de Grupos de Google a los permisos de Ad Manager.
Google Cloud Storage es un producto independiente de Google que Ad Manager utiliza como repositorio de datos para los informes de Data Transfer y los ID de cookies de audiencia subidos en lote.
Métodos
Hay tres maneras de acceder a los segmentos de almacenamiento en la nube de Ad Manager. Son las siguientes, 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 proporciona comandos del estilo de Unix para interactuar con el segmento de almacenamiento. La autenticación de segmentos se extrae y se gestiona automáticamente.
- La API de Google Cloud Storage es una API completa que sirve para editar segmentos de almacenamiento, disponible en interfaces web XML RESTful o JSON. Hay varias bibliotecas de clientes de API disponibles para muchos entornos habituales de programación, como Java, JavaScript, Python y Objective‑C. Este enfoque es el más útil en el caso de que haya que manipular mediante programación los segmentos de almacenamiento para integrarlos con una aplicación de Google App Engine o con una aplicación web de Java.
En este artículo se proporciona información detallada sobre la API de Google Cloud Storage. Los accesos web y de gsutil son más fáciles de gestionar, así que recomendamos considerar estos métodos antes. Están explicados en el sitio para desarrolladores de Google Cloud Storage.
Gestionar el acceso a los segmentos de almacenamiento de Ad Manager
Nuevo proceso (disponible en noviembre del 2024)
A partir de noviembre del 2024, puede empezar a migrar a los usuarios que necesiten acceder a los segmentos de almacenamiento de Data Transfer desde Grupos de Google a un nuevo permiso de rol de usuario de Ad Manager. Los usuarios con el rol de administrador podrán acceder a los segmentos de almacenamiento de forma predeterminada. En el caso de otros usuarios, puede añadirlos a un rol de usuario con el nuevo permiso "Ver segmentos de Data Transfer". Más información sobre la migración
Proceso actual (disponible hasta enero del 2025)
Nota: Le recomendamos que revise las fases de migración y que tome medidas antes de enero del 2025.
Los segmentos de almacenamiento que utiliza Ad Manager se incluyen en un proyecto de almacenamiento en la nube propiedad de Google. No aparecen en la lista de sus proyectos incluida en Google Developers Console.
Tendrá que colaborar con su representante de Google para configurar funciones que dependan de los segmentos de almacenamiento de Ad Manager y para que le proporcione un grupo de Google con el que podrá gestionar sus segmentos de almacenamiento.
Si es administrador de un grupo de G Suite, puede indicar el nombre de este grupo de Google a su representante como parte del proceso de activación de la función. Le ayudará a activar cualquier función que utilice segmentos de almacenamiento de Ad Manager.
Si gestiona varias redes de Ad Manager con acceso a Data Transfer, debe decírselo al representante de Google para que se pueda fusionar la gestión de la red. Se utilizará un grupo para gestionar todos los segmentos de Data Transfer de sus redes.
Utilizar la API de Google Cloud Storage
Si ha determinado que el acceso a la API es el método más adecuado a sus necesidades, se recomienda configurar una cuenta del servicio Google Cloud Storage.
Configurar cuentas de servicio de Google Cloud Storage
Al acceder al segmento de almacenamiento mediante la API, es preferible configurar una cuenta de servicio en lugar de ejecutarlo en el contexto de un usuario. En las cuentas de servicio se utiliza una clave privada para la autenticación en lugar de un token OAuth generado de forma dinámica, lo cual simplifica el proceso de desarrollo de aplicaciones. Para configurar una cuenta de servicio, siga estos pasos:
-
Vaya a Google Developer Console.
-
Cree o seleccione un proyecto para que sea el principal de su aplicación y haga clic en él.
-
(Opcional) Si piensa copiar archivos del segmento de almacenamiento de Ad Manager en su propia cuenta de Google Cloud Storage, haga clic en Facturación y configuración para añadir un origen de los importes de facturación a su proyecto.
-
Cree un ID de cliente:
-
Haga clic en APIs y servicios > Credenciales.
-
Haga clic en Crear ID de cliente nuevo.
-
Seleccione el tipo de aplicación Cuenta de servicio y haga clic en Crear ID de cliente.
-
La dirección de correo generada tendrá el formato
[id-único]@developer.gserviceagccount.com
. Cópiela y guárdela para añadirla a su grupo de Google. -
Haga clic en Generar una clave P12 nueva. Este archivo se guarda en su equipo. Utilice esta clave en las aplicaciones que desarrolle para acceder a la API como se muestra en el ejemplo de fragmento de código que figura más adelante.
-
- Añada la dirección de correo electrónico al grupo de Google que haya creado para gestionar el acceso a sus segmentos de almacenamiento de Ad Manager. Haga clic en Añadir miembros directamente en vez de en Invitar para añadir la cuenta de servicio. Si no tiene acceso, solicite al administrador del grupo de Google que añada la dirección en su nombre.
Google le proporciona ejemplos de fragmentos de código y bibliotecas para Google Cloud Storage. El siguiente ejemplo de cómo leer un archivo de un segmento de almacenamiento en la nube de Ad Manager con Java muestra cómo podrían afectar a su fragmento de código los componentes que defina al configurar la cuenta de servicio:
-
Nombre del proyecto: nombre del proyecto de Google Cloud Storage.
-
Dirección de correo electrónico de cuenta de servicio: la dirección de correo electrónico que ha generado.
-
Archivo de clave .p12: el archivo que ha descargado.
-
Nombre del segmento: Google le proporcionará este nombre cuando active una función que utilice 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 { /** * El nombre del proyecto en el que se creó la cuenta de servicio. * * Esta información se muestra en Google Developers Console. */ private static final String PROJECT_NAME = "project name"; /** * La dirección de correo electrónico del programador de la cuenta del servicio. * * Esta dirección de correo electrónico se genera al crear el ID de cliente * de la cuenta de servicio de su Google Developers Console y se puede * recuperar desde la página “Credentials (Credenciales). Esta dirección de correo electrónico se debe añadir al grupo de Google * utilizado para controlar el acceso al segmento de almacenamiento. */ private static final String SERVICE_ACCOUNT_EMAIL = "service account email address"; /** * Segmento que se utiliza con operaciones de almacenamiento. * * El nombre de este segmento se lo proporcionó su gestor * de cuentas. Es probable que su nombre sea algo como "gdfp-12345678" o * "gdfp_cookieupload_12345678", en función del complemento de Ad Manager que utilice. */ private static final String BUCKET_NAME = "bucket name"; /** * Alcance de Google Cloud Storage OAuth 2.0 de lectura y escritura. Esto debería * corresponderse con los derechos de acceso de su grupo de Google al * segmento, y no se pueden solicitar derechos de acceso que no estén concedidos * al grupo (que puede que sean de solo lectura). */ private static final String STORAGE_SCOPE = "https://www.googleapis.com/auth/devstorage.read_write"; /** * Ruta al archivo de clave .p12 que proporciona acceso al segmento. * * Este archivo se crea al mismo tiempo que el ID de cliente de servicio. Si no tiene * este archivo, deberá generar una clave p12 de cliente nueva desde * Google Developers Console. */ private static final String KEY_P12 = "path to .p12 key file"; /** Transporte de HTTP. */ private HttpTransport httpTransport; private Storage storage; // constructor, 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); } } /** * Método para devolver el nombre del primer archivo del segmento. * * @devuelve el nombre del archivo o nada, si el segmento está vacío * @activa la expresión throw 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(); // ¿segmento vacío? 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 descargar el archivo especificado del grupo de almacenamiento * * @nombre del archivo de parámetros * Nombre del archivo que se debe descargar. * @activa la expresión throw 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 ejecutar las distintas pruebas. * * @argumentos de parámetros */ 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()); } } }
Reducción y conexiones concurrentes
No existe un límite predefinido de conexiones simultáneas. Sin embargo, para evitar usos inadecuados, Google reduce las solicitudes de obtención de archivos de Data Transfer.