El acceso a los segmentos de almacenamiento de Data Transfer se gestiona mediante roles de usuario en Google Ad Manager. Una vez que tenga el permiso de rol de usuario necesario, podrá usar el método que prefiera para acceder a sus archivos de Data Transfer.
Ir a una sección del artículo:
- Acerca de los roles de usuario para el permiso
- Ver el permiso en un rol
- Métodos para acceder a segmentos de almacenamiento
- Utilizar la API de Google Cloud Storage
Acerca de los roles de usuario para el permiso
Para acceder a los segmentos de almacenamiento, debe tener un rol con el permiso "Ver segmentos de Data Transfer" habilitado.
- Roles de usuario de administrador: el permiso está habilitado de forma predeterminada para el rol de usuario integrado de administrador.
- Roles de usuario personalizados: el permiso se puede añadir a roles de usuario personalizados.
Para hacer cambios en los roles de usuario, debe ser administrador de su red o tener el permiso Editar usuarios, roles y equipos en la pestaña Administrar. Tenga en cuenta que un usuario solo puede estar asociado a un único rol.
Consulte más información en el artículo Gestionar la pertenencia a roles de usuario.
Ver el permiso en un rol
Puede revisar el rol que tiene un usuario y añadir o quitar el permiso según sea necesario.
- Inicie sesión en Google Ad Manager.
- Haga clic en Administrar y, a continuación, en Acceso y autorización.
- Haga clic en Roles y, a continuación, en el nombre de un rol.
- En "Informes", busque el permiso "Ver segmentos de Data Transfer".
- (Opcional) Para habilitar el permiso del rol, marque la casilla.
Métodos para acceder a segmentos de almacenamiento
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.
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.
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 y, a continuación, en 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. Añada el usuario de la cuenta de servicio a su red de Ad Manager y asegúrese de que tenga un rol con el permiso "Ver segmentos de Data Transfer". -
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.
-
- Los usuarios que tengan el permiso "Ver segmentos de Data Transfer" tendrán acceso a sus segmentos de almacenamiento de Ad Manager.
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).
*/
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 del permiso "Ver segmentos de Data Transfer"
* para el segmento, y no se pueden solicitar derechos de acceso que no estén concedidos
* a través del permiso.
*/
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.