Der Zugriff auf Speichergruppen für die Datenübertragung wird über Nutzerrollen in Google Ad Manager verwaltet. Sobald Sie die erforderliche Nutzerrollenberechtigung haben, können Sie mit der Methode Ihrer Wahl auf Ihre Datenübertragungsdateien zugreifen.
Zu einem Abschnitt des Artikels springen:
- Nutzerrollen für die Berechtigung
- Berechtigung in einer Rolle ansehen
- Methoden für den Zugriff auf Speichergruppen
- Google Cloud Storage API verwenden
Nutzerrollen für die Berechtigung
Um auf die Speichergruppen zugreifen zu können, benötigen Sie eine Rolle mit der aktivierten Berechtigung „Datenübertragungsgruppen ansehen“.
- Administratornutzerrollen: Die Berechtigung ist standardmäßig für die vordefinierte Nutzerrolle „Administrator“ aktiviert.
- Benutzerdefinierte Nutzerrollen: Die Berechtigung kann benutzerdefinierten Nutzerrollen hinzugefügt werden.
Wenn Sie Änderungen an Nutzerrollen vornehmen möchten, müssen Sie Administrator Ihres Netzwerks sein oder die Berechtigung Nutzer, Rollen und Teams auf dem Tab „Admin“ bearbeiten haben. Einem Nutzer kann jeweils nur eine Rolle zugewiesen werden.
Weitere Informationen finden Sie unter Nutzerrollenmitgliedschaft verwalten.
Berechtigung in einer Rolle ansehen
Sie können die Rolle eines Nutzers prüfen und die Berechtigung bei Bedarf hinzufügen oder entfernen.
- Melden Sie sich in Google Ad Manager an.
- Klicken Sie auf Admin und dann auf Zugriff und Autorisierung.
- Klicken Sie auf Rollen und dann auf den Namen einer Rolle.
- Suchen Sie unter „Berichterstellung“ nach der Berechtigung „Datenübertragungsgruppen ansehen“.
- Optional: Klicken Sie das Kästchen an, um die Berechtigung für die Rolle zu aktivieren.
Methoden für den Zugriff auf Speichergruppen
Google Cloud Storage ist ein separates Google-Produkt, das in Ad Manager als Daten-Repository für Datenübertragungsberichte und den Batch-Upload von Zielgruppencookie-IDs verwendet wird.
Sie haben drei Möglichkeiten, in Ad Manager auf Cloud-Speichergruppen zuzugreifen. Wir beginnen mit der einfachsten:
- Im Web: Rufen Sie
https://console.developers.google.com/storage/gdfp-[Code des Ad Manager-Netzwerks]auf. - gsutil ist ein auf Python basierendes Befehlszeilentool, das UNIX-ähnliche Befehle zur Interaktion mit dem Storage-Bucket bereitstellt. Die Bucket-Authentifizierung wird abstrahiert und automatisch verarbeitet.
- Die Google Cloud Storage API ist eine API mit vollem Funktionsumfang, mit der Sie die Storage-Buckets bearbeiten können. Sie ist über JSON- oder XML RESTful-Webschnittstellen verfügbar. Für viele bekannte Programmierumgebungen wie etwa Java, JavaScript, Python und Objective-C, stehen API-Clientbibliotheken zur Verfügung. Das ist insbesondere nützlich, wenn Sie die Storage-Buckets programmatisch bearbeiten müssen, damit sie in eine Google App Engine-App oder eine Java-Web-App integriert werden können.
Dieser Artikel enthält Details zur Google Cloud Storage API. Weil die Verwaltung des Web- und gsutil-Zugriffs einfacher ist, empfehlen wir Ihnen, zuerst diese beiden Methoden auszuprobieren. Diese sind auf der Entwicklerwebsite zu Google Cloud Storage vollständig dokumentiert.
Google Cloud Storage API verwenden
Wenn Sie sich für den API-Zugriff entschieden haben, empfehlen wir Ihnen, ein Google Cloud Storage-Dienstkonto zu konfigurieren.
Google Cloud Storage-Dienstkonto konfigurieren
Wenn Sie über die API auf die Speichergruppe zugreifen, sollten Sie ein Dienstkonto erstellen, anstatt ein Nutzerkonto zu verwenden. Dienstkonten erleichtern die Anwendungsentwicklung, da ein privater Schlüssel anstelle eines dynamisch generierten OAuth-Tokens zur Authentifizierung eingesetzt wird. So konfigurieren Sie ein Dienstkonto:
-
Rufen Sie die Google Developer Console auf.
-
Wählen Sie ein Projekt aus bzw. erstellen Sie ein neues, das als übergeordnetes Element für Ihre Anwendung dienen soll, und klicken Sie darauf.
-
(Optional) Wenn Sie Dateien aus der Ad Manager-Speichergruppe in Ihr eigenes Google Cloud Storage-Konto kopieren möchten, klicken Sie auf Abrechnung und Einstellungen, um Ihrem Projekt eine Abrechnungsquelle hinzuzufügen.
-
Erstellen Sie eine neue Client-ID:
-
Klicken Sie auf APIs und Dienste und dann auf Anmeldedaten.
-
Klicken Sie auf Neue Client-ID erstellen.
-
Wählen Sie als Anwendungstyp Dienstkonto aus und klicken Sie dann auf Client-ID erstellen.
-
Die generierte E-Mail-Adresse hat das Format
[eindeutige-id]@developer.gserviceagccount.com. Fügen Sie den Nutzer des Dienstkontos Ihrem Ad Manager-Netzwerk hinzu und achten Sie darauf, dass er eine Rolle mit der Berechtigung „Datenübertragungsgruppen ansehen“ hat. -
Klicken Sie auf Neuen P12-Schlüssel erstellen. Die Datei wird auf Ihrem Computer gespeichert. Sie können diesen Schlüssel in den Anwendungen verwenden, die Sie entwickeln, um auf die API zuzugreifen. Nachfolgend finden Sie ein entsprechendes Codebeispiel.
-
- Nutzer mit der Berechtigung „Datenübertragungsgruppen ansehen“ haben Zugriff auf Ihre Ad Manager-Speichergruppen.
Google stellt Codebeispiele und -bibliotheken für Google Cloud Storage bereit. Anhand des folgenden Java-Beispiels zum Lesen einer Datei aus einer Ad Manager-Cloudspeichergruppe können Sie nachvollziehen, wie die eingerichteten Komponenten sich möglicherweise auf Ihren Code auswirken:
-
Projektname: Name des Google Cloud Storage-Projekts
-
E-Mail-Adresse des Dienstkontos: Generierte E-Mail-Adresse
-
.p12-Schlüsseldatei: Heruntergeladene Datei
-
Gruppenname: Dieser Name wird von Google bereitgestellt, wenn Sie eine Funktion aktivieren, bei der Ad Manager-Cloudspeichergruppen zum Einsatz kommen.
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 {
/**
* Der Name des Projekts, unter dem das Dienstkonto erstellt wurde.
*
* Diese Informationen werden in der Google Developers Console angezeigt.
*/
private static final String PROJECT_NAME = "Projektname";
/**
* Die Developer-E-Mail-Adresse des Dienstkontos.
*
* Diese E-Mail-Adresse wird bei der Erstellung einer Dienstkonto-Client-ID in
* Ihrer Google Developers Console erstellt und kann auf der Seite
* "Anmeldedaten" abgerufen werden.
*/
private static final String SERVICE_ACCOUNT_EMAIL = "Dienstkonto-E-Mail-Adresse";
/**
* Gruppe für Speichervorgänge.
*
* Der Name dieser Gruppe wurde von Ihrem Account
* Manager bereitgestellt. Sie hat vermutlich einen Namen im Format "gdfp-12345678" oder
* "gdfp_cookieupload_12345678", je nachdem, welches Ad Manager-Add-on Sie verwenden.
*/
private static final String BUCKET_NAME = "bucket name";
/**
* Google Cloud Storage OAuth 2.0 scope for read/write. Dieser sollte
* den Zugriffsrechten der Gruppe für die Berechtigung „Datenübertragungsgruppen ansehen“
* entsprechen. Sie können keine Zugriffsrechte anfordern, die
* nicht über die Berechtigung gewährt werden.
*/
private static final String STORAGE_SCOPE =
"https://www.googleapis.com/auth/devstorage.read_write";
/**
* Pfad zur .p12-Schlüsseldatei, die Zugriff auf die Gruppe gewährt.
*
* Diese Datei wird bei Erzeugung der Serviceclient-ID generiert. Falls Sie diese Datei
* nicht besitzen, müssen Sie eine neue .p12-Schlüsseldatei aus der
* Google Developers Console generieren.
*/
private static final String KEY_P12 = "Pfad zur .p12-Schlüsseldatei";
/** HTTP-Transport. */
private HttpTransport httpTransport;
private Storage storage;
// Konstruktor zum Einrichten von Anmeldedaten und Speicherobjekten
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);
}
}
/**
* Methode, um den Namen der ersten Datei in der Gruppe abzurufen.
*
* @return – gibt den Namen der Datei zurück oder null, wenn die Gruppe leer ist
* @throws IOException – gibt IO-Ausnahmefehler aus
*/
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();
// leerer 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();
}
/**
* Methode zum Herunterladen der angegebenen Datei aus der Speichergruppe
*
* @param-Dateiname
* Name der herunterzuladenden Datei.
* @throws IOException – gibt IO-Ausnahmefehler aus
*/
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.");
}
/**
* Wichtigste Methode zur Ausführung der verschiedenen Tests.
*
* @param-Argumente
*/
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());
}
}
}
Throttling und gleichzeitige Verbindungen
Zur Anzahl gleichzeitiger Verbindungen gibt es keine festgelegte Begrenzung. Um Missbrauch zu vermeiden, grenzt Google die Abrufanforderungen bei der Datenübertragung jedoch ein.