Für das Senden von Anfragen an Storage Transfer Service müssen Sie zuerst die Cloud Storage Transfer Service API für Ihr Projekt aktivieren und Ihre Anwendung für die Autorisierung mit dem OAuth 2.0-Protokoll einrichten. Für den Fall, dass Anfragefehler auftreten, empfehlen wir außerdem die Implementierung des abgeschnittenen exponentiellen Backoffs für Wiederholungsversuche.
Dienst aktivieren
Für den Zugriff auf Storage Transfer Service über eine Google APIs-Bibliothek oder direkt über die Storage Transfer Service API muss die Google Storage Transfer API aktiviert werden.
Enable the Google Storage Transfer API.
Authentifizierungsvorgang
Da Storage Transfer Service-Vorgänge ohne menschliche Eingriffe oder die Einwilligung des Nutzers ablaufen, sollte die Authentifizierung für Storage Transfer Service-Anwendungen von Server zu Server über ein Dienstkonto erfolgen. App Engine und Compute Engine haben integrierte Dienstkonten, die Ihnen zur Verfügung stehen. Alternativ können Sie Dienstanmeldedaten in der Google Cloud Console erstellen.
Wenn Sie ein Dienstkonto verwenden, übernehmen die Google APIs-Clientbibliotheken die Authentifizierung und Autorisierung in den folgenden Szenarien:
- App Engine-Anwendung
Wenn Ihre Anwendung auf App Engine ausgeführt wird, wird sie mit dem zugehörigen Standarddienstkonto authentifiziert.
Der Code funktioniert auch mit Ihrem lokalen App Engine-Emulator, solange Sie die Google Cloud CLI (
mvn gcloud:run
) nutzen. Verwenden Sie dazu ein Dienstkonto und legen Sie die UmgebungsvariableGOOGLE_APPLICATION_CREDENTIALS
fest.Weitere Informationen finden Sie unter Lokaler oder externer Host.
- Compute Engine-Anwendung
Wenn Ihre Anwendung auf einer Compute Engine-Instanz ausgeführt wird, authentifiziert sie sich über das Standard-Compute Engine-Dienstkonto des Projekts.
Konfigurieren Sie die Instanz für die Verwendung von Dienstkonten und fügen Sie den im Abschnitt Autorisierungsbereich aufgeführten Bereich hinzu.
Weitere Informationen finden Sie in der Compute Engine-Dokumentation unter Zugriff auf Dienstkontobereich für Instanzen einrichten.
- Lokaler oder externer Host
Wenn Sie einen lokalen Client ausführen oder Ihr Programm in einer anderen Umgebung als Google Cloud ausgeführt wird, erstellen Sie ein neues Dienstkonto und laden Sie die zugehörige JSON-Schlüsseldatei herunter. Legen Sie dann die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
so fest, dass sie auf die JSON-Schlüsseldatei verweist.Weitere Informationen finden Sie unter Authentifizierung als Dienstkonto.
Autorisierungsbereich
Für Anwendungen, die mit OAuth 2.0 auf Storage Transfer Service zugreifen, muss der Autorisierungsbereich cloud-platform
angegeben werden.
Bereich | Bedeutung |
---|---|
https://www.googleapis.com/auth/cloud-platform |
Uneingeschränkter Zugriff |
Client erstellen
Mit dem folgenden Beispielcode können Sie in jeder der unter Authentifizierungsvorgang beschriebenen Umgebungen einen Storage Transfer Service-Client erstellen. Da der Code die Standardanmeldedaten für Google-Anwendungen nutzt, wird das entsprechende Dienstkonto automatisch ausgewählt.
Dem Dienstkonto muss eine der folgenden Rollen zugewiesen sein:
- roles/owner
- roles/editor
- roles/storagetransfer.admin
- roles/storagetransfer.user
Eine benutzerdefinierte Rolle, die mindestens die Berechtigung roles/storagetransfer.user umfasst
Weitere Informationen zum Hinzufügen und Aufrufen von Berechtigungen auf Projektebene finden Sie unter IAM-Berechtigungen für Storage Transfer Service-Methoden und Beispiele für IAM-Berechtigungen und -Rollen.
Dies können Sie auf der Seite „Berechtigungen“ für Ihr Projekt prüfen.
Java
In diesem Beispiel wird die Google APIs-Clientbibliothek für Java verwendet. Die benutzerdefinierte Klasse RetryHttpInitializerWrapper
wird im Abschnitt Umgang mit Wiederholungen beschrieben.
Python
In diesem Beispiel wird die Google APIs-Clientbibliothek für Python verwendet.
Umgang mit Wiederholungen
Im Fall von RPC-Fehlern sollten Sie Code für den Umgang mit Wiederholungsversuchen gemäß einer Strategie mit abgeschnittenem exponentiellem Backoff implementieren.
Java
In diesem Beispiel wird die Google APIs-Clientbibliothek für Java verwendet. Die Klasse RetryHttpInitializerWrapper
ist für den Umgang mit Wiederholungsversuchen definiert.
Python