Wenn Sie Daten in ein lokales oder privates Cloud-Dateisystem (z. B. POSIX, NFS oder SMB) übertragen, müssen Sie Folgendes konfigurieren:
- Berechtigungen für das lokale Dateisystem: Gewähren Sie den Ziel-Übertragungs-Agents Schreibzugriff auf Betriebssystemebene für Ihre Zielverzeichnisse.
- Berechtigungen für Zwischen-Bucket (nur Datei-zu-Datei): Gewähren Sie IAM-Rollen für den Zwischen-Cloud Storage-Bucket, der zum Bereitstellen von Dateien zwischen Dateisystemen verwendet wird.
Vorbereitung
- Nutzerberechtigungen: Ihr Nutzerkonto oder vom Nutzer verwaltetes Dienstkonto muss die Berechtigung zum Konfigurieren von Übertragungsjobs und Agent-Pools haben. Weitere Informationen finden Sie unter Erforderliche Nutzerberechtigungen.
- Agent-basierte Berechtigungen auf Projektebene: Prüfen Sie, ob Sie die erforderlichen Rollen auf Projektebene für Ihr Dienst-Agent- und Übertragungs-Agent-Konto konfiguriert haben. Siehe Agent-basierte Berechtigungen auf Projektebene.
Berechtigungen für das lokale Zieldateisystem
Übertragungs-Agents schreiben Dateien direkt in das Host-Dateisystem. So ermöglichen Sie erfolgreiche Schreibvorgänge:
Betriebssystem-Nutzerberechtigungen: Der Betriebssystemnutzer, der den Containerprozess ausführt, muss Lese-, Schreib- und Ausführungsberechtigungen für den Zielverzeichnisbaum haben.
Verzeichnisse bereitstellen: Stellen Sie bei der Installation der Ziel-Agents den Zielverzeichnispfad mit dem Flag
--mount-directoriesim Container bereit:gcloud transfer agents install --pool=DESTINATION_POOL_NAME \ --mount-directories=/path/to/destination/dir
Berechtigungen für Zwischen-Buckets (Datei-zu-Datei-Übertragungen)
Bei Übertragungen zwischen zwei Dateisystemen wird ein Cloud Storage-Zwischen-Bucket verwendet, um Dateien während der Übertragung bereitzustellen.
Die folgenden vordefinierten Rollen gewähren dem Dienst-Agent den erforderlichen Zugriff auf den Zwischen-Bucket:
- Storage-Objekt-Ersteller (
roles/storage.objectCreator) - Storage-Objekt-Betrachter (
roles/storage.objectViewer) - Leser von Legacy-Storage-Buckets (
roles/storage.legacyBucketReader)
Die folgende Rolle gewährt den erforderlichen Zugriff auf den Zwischen-Bucket für die Konten der Übertragungs-Agents:
- Storage-Objekt-Nutzer (
roles/storage.objectUser)
Weisen Sie dem Zwischen-Bucket diese Rollen zu:
Console
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
- Klicken Sie auf das Dreipunkt-Menü () für den Zwischen-Bucket und wählen Sie Zugriff bearbeiten aus.
- Klicken Sie auf + Hauptkonto hinzufügen.
- Geben Sie unter Neue Hauptkonten die E-Mail-Adresse des Dienst-Agents ein.
- Wählen Sie im Drop-down-Menü Rolle auswählen die Optionen
Storage Object Creator,Storage Object ViewerundStorage Legacy Bucket Readeraus. - Klicken Sie noch einmal auf + Hauptkonto hinzufügen.
- Geben Sie die E-Mail-Adresse der Übertragungs-Agent-Konten ein, die für Ihre Quell- und Ziel-Agent-Pools verwendet werden.
- Wählen Sie im Drop-down-Menü Rolle auswählen die Option
Storage Object Useraus. - Klicken Sie auf Speichern.
gcloud
Weisen Sie dem Dienst-Agent Logging- und Metadatenrollen zu:
gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorgcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectViewergcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReaderWeisen Sie den Konten der Übertragungs-Agents für die Quell- und Ziel-Agent-Pools Rollen für die Objektverwaltung zu:
gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \ --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.objectUserErsetzen Sie:
- INTERMEDIATE_BUCKET_NAME: Der Name Ihres Zwischen-Staging-Buckets.
- SERVICE_AGENT_EMAIL: Die E-Mail-Adresse des Dienst-Agents.
- serviceAccount_OR_user: Geben Sie entweder
serviceAccountan, wenn Ihr Transfer-Agent-Konto ein Dienstkonto ist, oderuser, wenn Ihre Agents mit einem Nutzerkonto installiert wurden. - TRANSFER_AGENT_ACCOUNT: Die E-Mail-Adresse des Kontos, auf dem die Übertragungs-Agents ausgeführt werden. Wiederholen Sie diesen Befehl, wenn Ihre Quell- und Ziel-Agent-Pools unterschiedliche Konten verwenden.
REST API
Generieren Sie ein Zugriffstoken, um Ihre Anfrage zu authentifizieren. Wenn Sie die
gcloud-Befehlszeile verwenden, führen Sie Folgendes aus:gcloud auth print-access-token
Rufen Sie die vorhandene Bucket-IAM-Richtlinie (
GET https://storage./storage/v1/b/<var>INTERMEDIATE_BUCKET_NAME</var>/iam) ab, hängen Sie die folgenden Bindungen an das Arraybindingsan und speichern Sie die zusammengeführte Richtlinie alsintermediate_policy.json:{ "bindings": [ { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectViewer", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectUser", "members": ["serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT"] } ] }
Ersetzen Sie:
- SERVICE_AGENT_EMAIL: Die E-Mail-Adresse des Dienst-Agents.
- serviceAccount_OR_user: Geben Sie entweder
serviceAccountan, wenn Ihr Transfer-Agent-Konto ein Dienstkonto ist, oderuser, wenn Ihre Agents mit einem Nutzerkonto installiert wurden. - TRANSFER_AGENT_ACCOUNT: Die E-Mail-Adresse des Kontos, über das Ihre Übertragungs-Agents installiert wurden. Wenn Ihre Quell- und Ziel-Agent-Pools unterschiedliche Konten verwenden, fügen Sie beide Konten in das
members-Array fürroles/storage.objectUserein.
Aktualisieren Sie die Richtlinie für den Zwischen-Bucket über
curl:curl -X PUT --data-binary @intermediate_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/INTERMEDIATE_BUCKET_NAME/iam"Ersetzen Sie:
- OAUTH2_TOKEN: Das in Schritt 1 generierte OAuth 2.0-Zugriffstoken.
- INTERMEDIATE_BUCKET_NAME: Der Name Ihres Zwischen-Buckets.
Weitere Informationen zu Datei-zu-Datei-Architekturen finden Sie unter Übertragungen von Dateisystem zu Dateisystem.
Leistung und Optimierung
- Wenn Sie den Durchsatz bei der Übertragung in große Dateisysteme maximieren möchten, installieren Sie mehrere Agents in Ihrem Ziel-Agent-Pool (empfohlen werden mindestens 3). Weitere Informationen finden Sie unter Best Practices für Übertragungs-Agents.
- Bei großen Dateien in Datei-zu-Datei-Übertragungen sollten Sie mehrteilige Uploads in den Zwischen-Bucket aktivieren. Wenn Sie Storage-Objekt-Nutzer (
roles/storage.objectUser) verwenden, sind die erforderlichen Berechtigungen für mehrteilige Uploads (storage.multipartUploads.*) automatisch enthalten.