Übertragungen erstellen

Auf dieser Seite erfahren Sie, wie Sie Übertragungsjobs erstellen und starten.

Informationen, ob Ihre Quelle und Ihr Ziel (auch als Senke bezeichnet) von Storage Transfer Service unterstützt werden, finden Sie unter Unterstützte Quellen und Senken.

Agents und Agent-Pools

Je nach Quelle und Ziel müssen Sie möglicherweise einen Agent-Pool erstellen und konfigurieren und Agents auf einem Computer mit Zugriff auf Ihre Quelle oder Ziel installieren.

  • Für Übertragungen von Amazon S3, Microsoft Azure, URL-Listen oder Cloud Storage zu Cloud Storage sind Agents und Agent-Pools nicht erforderlich.

  • Übertragungen, deren Quelle und/oder Ziel ein Dateisystem oder aus S3-kompatibler Speicher. Erfordert Agents und Agent-Pools. Eine Anleitung finden Sie unter Agent-Pools verwalten.

Vorbereitung

Bevor Sie die Übertragungen konfigurieren, müssen Sie den Zugriff konfiguriert haben:

Wenn Sie gcloud-Befehle verwenden, installieren Sie die gcloud CLI.

Übertragung erstellen

Der Name des Übertragungsjobs darf keine vertraulichen Informationen wie personenidentifizierbare Informationen oder Sicherheitsdaten enthalten. Ressourcennamen können an die Namen anderer Google Cloud-Ressourcen weitergegeben und Google-internen Systemen außerhalb Ihres Projekts zu implementieren.

Google Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite Storage Transfer Service auf.

    Storage Transfer Service aufrufen

  2. Klicken Sie auf Übertragung erstellen. Die Seite Übertragungsjob erstellen wird angezeigt.

  3. Wählen Sie eine Quelle aus:

    Cloud Storage

    Ihr Nutzerkonto muss die Berechtigung storage.buckets.get haben, um Quell- und Ziel-Buckets auszuwählen. Alternativ können Sie den Namen des Buckets direkt eingeben. Weitere Informationen finden Sie unter Zugriff auf die Fehlerbehebung.

    1. Wählen Sie unter Quelltyp die Option Cloud Storage aus.

    2. Wählen Sie den Zieltyp aus.

    3. Wenn das Ziel Cloud Storage ist, wählen Sie den Planungsmodus aus. Batch-Übertragungen werden einmalig oder geplant ausgeführt. Kontinuierliche ereignisgesteuerte Übertragungen die Quelle überwachen und Daten übertragen, wenn sie hinzugefügt oder geändert werden.

      Folgen Sie der Anleitung unter Ereignisgesteuerte Übertragungen, um eine ereignisgesteuerte Übertragung zu konfigurieren.

    4. Klicken Sie auf Nächster Schritt.

    5. Wählen Sie einen Bucket und optional einen Ordner in diesem Bucket aus, indem Sie einen der folgenden Schritte ausführen:

      • Geben Sie im Feld Bucket oder Ordner einen vorhandenen Cloud Storage-Bucket-Namen und -Pfad ohne das Präfix gs:// ein. Beispiel: my-test-bucket/path/to/files Geben Sie den Namen in der exakten Schreibweise in das Feld Bucket-Name ein, wenn Sie einen Cloud Storage-Bucket aus einem anderen Projekt festlegen möchten.

      • Wählen Sie eine Liste der vorhandenen Buckets in Ihren Projekten aus. Klicken Sie dazu auf Durchsuchen und wählen Sie einen Bucket aus.

        Wenn Sie auf Durchsuchen klicken, können Sie Buckets in anderen Projekten auswählen. Klicken Sie dazu auf Projekt-ID, dann wählen Sie die neue Projekt-ID und den Bucket aus.

      • Zum Erstellen eines neuen Buckets klicken Sie auf  Neuen Bucket erstellen.

    6. Wenn es sich um eine ereignisgesteuerte Übertragung handelt, geben Sie den Namen des Pub/Sub-Abos ein. Er muss folgendermaßen formatiert sein:

      projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID
      
    7. Optional: Objekte nach Präfix filtern oder nach Datum der letzten Änderung. Wenn Sie einen Ordner als Quellspeicherort angegeben haben, werden Präfixfilter verwendet. relativ zu diesem Ordner. Wenn Ihre Quelle beispielsweise my-test-bucket/path/ ist, werden mit einem Einschlussfilter von file alle Dateien eingeschlossen, die mit my-test-bucket/path/file beginnen.
    8. Klicken Sie auf Nächster Schritt.

    Amazon S3

    Weitere Informationen finden Sie unter Übertragung von Amazon S3 zu Cloud Storage.

    S3-kompatibler Speicher

    Weitere Informationen finden Sie unter Von S3-kompatiblem Speicher zu Cloud Storage übertragen.

    Microsoft Azure Blob Storage

    1. Wählen Sie unter Quelltyp die Option Azure Blob Storage oder Data Lake Storage Gen2 aus.

    2. Klicken Sie auf Next step (Nächster Schritt).

    3. Geben Sie Folgendes an:

      1. Storage-Kontoname: der Name des Microsoft Azure Storage-Quellkontos.

        Der Name des Storage-Kontos wird im Microsoft Azure Storage-Portal unter Alle Dienste > Speicher > Speicherkonten angezeigt.

      2. Containername: der Name des Microsoft Azure Storage-Containers.

        Der Containername wird im Microsoft Azure Storage-Portal unter Speicher Explorer > Blob-Container angezeigt.

      3. Shared Access Signature (SAS): Das Microsoft Azure Storage-SAS-Token, das aus einer gespeicherten Zugriffsrichtlinie erstellt wurde. Weitere Informationen finden Sie unter Gewähren von eingeschränktem Zugriff auf Azure Storage-Ressourcen mithilfe von SAS (Shared Access Signature).

        Die Standardablaufzeit für SAS-Tokens beträgt 8 Stunden. Achten Sie bei der Erstellung des SAS-Tokens darauf, eine angemessene Ablaufzeit festzulegen, damit Sie die Übertragung erfolgreich abschließen können.
    4. Optional können Sie Objekte nach Präfix oder nach dem Datum der letzten Änderung filtern. Wenn Sie einen Ordner als Quellspeicherort angegeben haben, werden Präfixfilter verwendet. relativ zu diesem Ordner. Wenn Ihre Quelle beispielsweise my-test-bucket/path/ ist, wird ein Der Einschließen-Filter von file enthält alle Dateien, die mit beginnen my-test-bucket/path/file
    5. Klicken Sie auf Nächster Schritt.

    Dateisystem

    1. Wählen Sie unter Quelltyp die Option POSIX-Dateisystem aus.

    2. Wählen Sie Ihren Zieltyp aus und klicken Sie auf Nächster Schritt.

    3. Wählen Sie einen vorhandenen Agent-Pool aus oder wählen Sie Agent-Pool erstellen aus und folgen Sie der Anleitung zum Erstellen eines neuen Pools.

    4. Geben Sie den vollständig qualifizierten Pfad des Dateisystemverzeichnisses an.

    5. Klicken Sie auf Nächster Schritt.

    HDFS

    Weitere Informationen finden Sie unter Von HDFS zu Cloud Storage übertragen

    URL-Liste

    1. Wählen Sie unter Quelltyp die Option URL-Liste aus und klicken Sie auf Nächster Schritt.

    2. Geben Sie unter URL der TSV-Datei die URL zu einer TSV-Datei (tabulatorgetrennte Werte) ein. Details zum Erstellen der TSV-Datei finden Sie unter URL-Liste erstellen.

    3. Optional können Sie Objekte nach Präfix oder nach dem Datum der letzten Änderung filtern. Wenn Sie einen Ordner als Quellspeicherort angegeben haben, werden Präfixfilter verwendet. relativ zu diesem Ordner. Wenn Ihre Quelle beispielsweise my-test-bucket/path/ ist, werden mit einem Einschlussfilter von file alle Dateien eingeschlossen, die mit my-test-bucket/path/file beginnen.
    4. Klicken Sie auf Nächster Schritt.

  4. Ziel auswählen:

    Cloud Storage

    1. Geben Sie im Feld Bucket oder Ordner den Ziel-Bucket und optional den Ordnernamen ein. Sie können auch auf Durchsuchen klicken, um einen Bucket aus einer Liste der vorhandenen Buckets im aktuellen Projekt auszuwählen. Klicken Sie zum Erstellen eines neuen Buckets auf  Neuen Bucket erstellen.

    2. Klicken Sie auf Next step (Nächster Schritt).

    3. Wählen Sie die Einstellungen für den Übertragungsjob aus. Einige Optionen sind nur für bestimmte Kombinationen aus Quelle und Senke verfügbar.

      1. Geben Sie im Feld Beschreibung eine Beschreibung der Übertragung ein. Geben Sie als Best Practice eine aussagekräftige Beschreibung ein, damit Sie die Jobs unterscheiden können.

      2. Wählen Sie unter Metadatenoptionen die Standardoptionen aus oder klicken Sie auf Optionen auswählen und auswählen, um Werte für alle unterstützten Metadaten anzugeben. Weitere Informationen finden Sie unter Metadatenaufbewahrung.

      3. Wählen Sie unter Wann überschreiben? eine der folgenden Optionen aus:

        • Falls unterschiedlich: Überschreibt Zieldateien, wenn die Quelldatei mit demselben Namen unterschiedliche ETags oder Prüfsummenwerte hat.

        • Immer: Zieldateien werden immer geschrieben, wenn die Quelldatei denselben Namen hat, auch wenn sie identisch sind.

      4. Wählen Sie unter Löschzeitpunkt eine der folgenden Optionen aus:

        • Nie: Dateien werden niemals aus der Quelle oder dem Ziel gelöscht.

        • Datei nach der Übertragung aus der Quelle löschen: Dateien werden aus der Quelle gelöscht, nachdem sie an das Ziel übertragen wurden.

        • Dateien aus dem Ziel löschen, wenn sie nicht auch in der Quelle sind: Wenn sich Dateien im Cloud Storage-Ziel-Bucket nicht auch in der Quelle befinden, löschen Sie die Dateien aus dem Cloud Storage-Bucket.

          Mit dieser Option wird sichergestellt, dass der Cloud Storage-Ziel-Bucket genau mit Ihrer Quelle übereinstimmt.

      5. Wählen Sie unter Benachrichtigungsoptionen Ihr Pub/Sub-Thema und die Ereignisse aus, die Sie benachrichtigen möchten. Weitere Informationen finden Sie unter Pub/Sub-Benachrichtigungen.

    4. Klicken Sie auf Next step (Nächster Schritt).

    Dateisystem

    1. Wählen Sie einen vorhandenen Agent-Pool oder Agent-Pool erstellen aus. und folgen Sie der Anleitung, um einen neuen Pool zu erstellen.

    2. Geben Sie den vollständig qualifizierten Zielverzeichnispfad an.

    3. Klicken Sie auf Next step (Nächster Schritt).

  5. Wählen Sie die gewünschten Zeitplanoptionen aus:

    1. Wählen Sie in der Drop-down-Liste Einmal ausführen eine der folgenden Optionen aus:

      • Einmal ausführen: Führt eine einzelne Übertragung aus, beginnend zu einem von Ihnen ausgewählten Zeitpunkt.

      • Täglich ausführen: Führt jeden Tag eine Übertragung zu einem von Ihnen ausgewählten Zeitpunkt aus.

        Sie können ein optionales Enddatum eingeben oder das Enddatum beibehalten. leer, um die Übertragung kontinuierlich auszuführen.

      • Jede Woche ausführen: Die Übertragung wird wöchentlich gestartet, wobei die Übertragung jeweils beginnt. die Sie auswählen.

      • Mit benutzerdefinierter Frequenz ausführen: Führt eine Übertragung mit der von Ihnen ausgewählten Häufigkeit wird aus. Sie können die Übertragung in regelmäßigen Abständen gemessen in Stunden, Tagen oder Wochen wiederholen.

        Sie können ein optionales Enddatum eingeben oder das Enddatum beibehalten. leer, um die Übertragung kontinuierlich auszuführen.

    2. Wählen Sie in der Drop-down-Liste Jetzt starten eine der folgenden Optionen aus:

      • Jetzt starten: Damit wird die Übertragung gestartet, nachdem Sie auf Erstellen geklickt haben.

      • Ab dem: Die Übertragung wird an dem ausgewählten Datum und zur ausgewählten Uhrzeit gestartet. Klicken Sie auf Kalender, um einen Kalender aufzurufen und das Startdatum auszuwählen.

    3. Klicken Sie zum Erstellen des Übertragungsjobs auf Erstellen.

gcloud-CLI

Verwenden Sie zum Erstellen eines neuen Übertragungsjobs den Befehl gcloud transfer jobs create. Das Erstellen eines neuen Jobs initiiert die angegebene Übertragung, sofern weder ein Zeitplan noch --do-not-run angegeben ist.

gcloud transfer jobs create \
  SOURCE DESTINATION

Wobei:

  • SOURCE ist die Datenquelle für diese Übertragung. Das Format für jede Quelle lautet:

    • Cloud Storage: gs://BUCKET_NAME. Geben Sie für die Übertragung aus einem bestimmten Ordner gs://BUCKET_NAME/FOLDER_PATH/ an, einschließlich des abschließenden Schrägstrichs.
    • Amazon S3: s3://BUCKET_NAME/FOLDER_PATH
    • S3-kompatibler Speicher: s3://BUCKET_NAME. Die Der Bucket-Name ist relativ zum Endpunkt. Wenn sich Ihre Daten beispielsweise unter https://us-east-1.example.com/folder1/bucket_a befinden, geben Sie s3://folder1/bucket_a ein.
    • Microsoft Azure-Speicher: https://myaccount.blob.core.windows.net/CONTAINER_NAME
    • URL-Liste: https://PATH_TO_URL_LIST oder http://PATH_TO_URL_LIST
    • POSIX-Dateisystem: posix:///PATH Dies muss ein absoluter Pfad vom Stammverzeichnis des Agent-Hostcomputers sein.
    • HDFS: hdfs:///PATH
  • Der DESTINATION ist einer der folgenden:

    • Cloud Storage: gs://BUCKET_NAME. Geben Sie zum Übertragen in ein bestimmtes Verzeichnis gs://BUCKET_NAME/FOLDER_PATH/ an, einschließlich des abschließenden Schrägstrichs.
    • POSIX-Dateisystem: posix:///PATH Dies muss ein absoluter Pfad vom Stammverzeichnis des Agent-Hostcomputers sein.

Wenn für die Übertragung Übertragungs-Agents erforderlich sind, sind die folgenden Optionen verfügbar:

  • --source-agent-pool gibt den für diese Übertragung zu verwendenden Quell-Agent-Pool an. Erforderlich für Übertragungen, die von einem Dateisystem stammen.

  • --destination-agent-pool gibt den Ziel-Agent-Pool an, der für diese Übertragung verwendet werden soll. Erforderlich für Übertragungen an ein Dateisystem.

  • --intermediate-storage-path ist der Pfad zu einem Cloud Storage-Bucket im Format gs://my-intermediary-bucket. Erforderlich für Übertragungen zwischen zwei Dateisystemen. Weitere Informationen zum Zwischen-Bucket finden Sie unter Cloud Storage-Bucket als zwischengelagerten Bucket erstellen.

Weitere Optionen:

  • --source-creds-file gibt den relativen Pfad zu einer lokalen Datei auf Ihrem Rechner an, die AWS- oder Azure-Anmeldedaten für die Übertragungsquelle enthält. Informationen zur Formatierung von Anmeldedatendateien finden Sie in der Referenz zu TransferSpec.

  • --do-not-run verhindert, dass Storage Transfer Service nach dem Senden des Befehls den Job ausführt. Zum Ausführen des Jobs aktualisieren Sie ihn, um einen Zeitplan hinzuzufügen, oder verwenden jobs run, um ihn manuell zu starten.

  • --manifest-file gibt den Pfad zu einer CSV-Datei in Cloud Storage an, die eine Liste der Dateien enthält, die von Ihrer Quelle übertragen werden sollen. Informationen zur Formatierung von Manifestdateien finden Sie unter Bestimmte Dateien oder Objekte mithilfe eines Manifests übertragen.

  • Jobinformationen: Sie können --name, --description und --source-creds-file angeben.

  • Zeitplan: Geben Sie --schedule-starts, --schedule-repeats-every und --schedule-repeats-until oder --do-not-run an.

  • Objektbedingungen: Mit Bedingungen können Sie bestimmen, welche Objekte übertragen werden. Dazu gehören --include-prefixes und --exclude-prefixes sowie die zeitbasierten Bedingungen in --include-modified-[before | after]-[absolute | relative]. Wenn Sie einen Ordner mit Ihrer Quelle angegeben hat, sind Präfixfilter relativ zu diesem Ordner. Weitere Informationen finden Sie unter Quellobjekte nach Präfix filtern. Informationen.

    Objektbedingungen werden für Übertragungen mit Dateisystemen nicht unterstützt.

  • Übertragungsoptionen: Bestimmen Sie, ob Zieldateien überschrieben werden sollen (--overwrite-when=different oderalways) und ob bestimmte Dateien während oder nach der Übertragung gelöscht werden sollen (--delete-from=destination-if-unique odersource-after-transfer); welche Metadatenwerte beibehalten werden (--preserve-metadata); und legen Sie optional eine Speicherklasse für übertragene Objekte fest (--custom-storage-class).

  • Benachrichtigungen: Konfigurieren Sie Pub/Sub-Benachrichtigungen für Übertragungen mit --notification-pubsub-topic, --notification-event-types und --notification-payload-format.

  • Cloud Logging: Aktivieren Sie Cloud Logging für Übertragungen ohne Agent oder Übertragungen aus S3-kompatiblen Quellen mit --log-actions und --log-action-states. Weitere Informationen finden Sie unter Cloud Logging für Storage Transfer Service .

Bei Übertragungen von S3-kompatiblen Quellen werden außerdem die folgenden Optionen verwendet:

  • --source-endpoint (erforderlich) gibt den Endpunkt des Speichersystems an. Beispiel: s3.example.com. Wenden Sie sich an Ihren Anbieter, um das richtige Format zu finden. Geben Sie nicht das Protokoll an (http:// oder https://).
  • --source-signing-region gibt eine Region für Signieranfragen an. Lassen Sie dieses Flag weg, wenn Ihr Speicheranbieter keine Signaturregion benötigt.
  • --source-auth-method gibt die zu verwendende Authentifizierungsmethode an. Gültige Werte sind AWS_SIGNATURE_V2 oder AWS_SIGNATURE_V4. Weitere Informationen finden Sie in der Dokumentation zu SigV4 und SigV2 von Amazon.
  • --source-request-model gibt den zu verwendenden Adressierungsstil an. Gültige Werte sind PATH_STYLE oder VIRTUAL_HOSTED_STYLE. Der Pfadstil hat das Format https://s3.example.com/BUCKET_NAME/KEY_NAME. Der virtuelle Hosting-Stil verwendet das Format `https://BUCKET_NAME.s3.beispiel.de/KEY_NAME.
  • --source-network-protocol gibt das Netzwerkprotokoll an, das Agents für diesen Job verwenden sollen. Gültige Werte sind HTTP und HTTPS.
  • --source-list-api gibt die Version der S3 Listing API für die Rückgabe von Objekten aus dem Bucket an. Gültige Werte sind LIST_OBJECTS oder LIST_OBJECTS_V2. Weitere Informationen finden Sie in der Amazon-Dokumentation zu ListObjectsV2 und ListObjects.

Führen Sie gcloud transfer jobs create --help aus oder sehen Sie sich die gcloud-Referenzdokumentation an, um alle Optionen aufzurufen.

Beispiele

Amazon S3 für Cloud Storage

Weitere Informationen finden Sie unter Übertragung von Amazon S3 zu Cloud Storage.

Von S3-kompatiblem Speicher zu Cloud Storage

Weitere Informationen finden Sie unter Von S3-kompatiblem Speicher zu Cloud Storage übertragen.

Dateisystem in Cloud Storage

Weitere Informationen finden Sie unter Von einem Dateisystem in Cloud Storage übertragen.

Cloud Storage zum Dateisystem

Geben Sie Folgendes an, um von einem Cloud Storage-Bucket in ein Dateisystem zu übertragen:

gcloud transfer jobs create \
  gs://my-storage-bucket posix:///tmp/destination \
  --destination-agent-pool=my-destination-agent-pool

Dateisystem zum Dateisystem

Für die Übertragung zwischen zwei Dateisystemen müssen Sie einen Quell-Agent-Pool, einen Ziel-Agent-Pool und einen Cloud Storage-Zwischen-Bucket angeben, über den die Daten übertragen werden.

Weitere Informationen finden Sie unter Cloud Storage-Bucket als Vermittler erstellen um Details zum Zwischen-Bucket zu erhalten.

Geben Sie dann beim Aufrufen von transfer jobs create die folgenden drei Ressourcen an:

gcloud transfer jobs create \
  posix:///tmp/source/on/systemA posix:///tmp/destination/on/systemB \
  --source-agent-pool=source_agent_pool \
  --destination-agent-pool=destination_agent_pool \
  --intermediate-storage-path=gs://my-intermediary-bucket

REST

Die folgenden Beispiele zeigen, wie Sie den Storage Transfer Service über die REST API verwenden.

Wenn Sie Übertragungsjobs mithilfe der Storage Transfer Service API konfigurieren oder bearbeiten, muss die Zeit in UTC angegeben werden. Weitere Informationen zum Angeben des Zeitplans für einen Übertragungsjob finden Sie unter Zeitplan.

Übertragung zwischen Cloud Storage-Buckets

In diesem Beispiel erfahren Sie, wie Sie Dateien von einem Cloud Storage-Bucket in einen anderen verschieben. Sie können beispielsweise Daten in einen Bucket an einem anderen Speicherort bewegen.

Anfrage mit transferJobs create:

POST https://storagetransfer.googleapis.com/v1/transferJobs
{
  "description": "YOUR DESCRIPTION",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "schedule": {
      "scheduleStartDate": {
          "day": 1,
          "month": 1,
          "year": 2015
      },
      "startTimeOfDay": {
          "hours": 1,
          "minutes": 1
      }
  },
  "transferSpec": {
      "gcsDataSource": {
          "bucketName": "GCS_SOURCE_NAME"
      },
      "gcsDataSink": {
          "bucketName": "GCS_SINK_NAME"
      },
      "transferOptions": {
          "deleteObjectsFromSourceAfterTransfer": true
      }
  }
}
Antwort:
200 OK
{
  "transferJob": [
      {
          "creationTime": "2015-01-01T01:01:00.000000000Z",
          "description": "YOUR DESCRIPTION",
          "name": "transferJobs/JOB_ID",
          "status": "ENABLED",
          "lastModificationTime": "2015-01-01T01:01:00.000000000Z",
          "projectId": "PROJECT_ID",
          "schedule": {
              "scheduleStartDate": {
                  "day": 1,
                  "month": 1,
                  "year": 2015
              },
              "startTimeOfDay": {
                  "hours": 1,
                  "minutes": 1
              }
          },
          "transferSpec": {
              "gcsDataSource": {
                  "bucketName": "GCS_SOURCE_NAME",
              },
              "gcsDataSink": {
                  "bucketName": "GCS_NEARLINE_SINK_NAME"
              },
              "objectConditions": {
                  "minTimeElapsedSinceLastModification": "2592000.000s"
              },
              "transferOptions": {
                  "deleteObjectsFromSourceAfterTransfer": true
              }
          }
      }
  ]
}

Übertragung von Amazon S3 zu Cloud Storage

Weitere Informationen finden Sie unter Übertragung von Amazon S3 zu Cloud Storage.

Übertragung zwischen Microsoft Azure Blob Storage und Cloud Storage

In diesem Beispiel erfahren Sie, wie Sie Dateien von Microsoft Azure Storage in ein Cloud Storage-Bucket verschieben und dabei ein Microsoft Azure Storage Shared Access Signature-Token (SAS) verwenden.

Weitere Informationen zu Microsoft Azure Storage SAS finden Sie unter Zugriff auf Azure Storage-Ressourcen mit SAS (Shared Access Signature) gewähren.

Informieren Sie sich dazu in den Abschnitten Zugriff auf Microsoft Azure Storage konfigurieren und Preise über die Auswirkungen einer Datenverschiebung von Microsoft Azure Storage nach Cloud Storage.

Anfrage mit transferJobs create:

POST https://storagetransfer.googleapis.com/v1/transferJobs
{
  "description": "YOUR DESCRIPTION",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "schedule": {
      "scheduleStartDate": {
          "day": 14,
          "month": 2,
          "year": 2020
      },
      "scheduleEndDate": {
          "day": 14
          "month": 2,
          "year": 2020
      },
      "startTimeOfDay": {
          "hours": 1,
          "minutes": 1
      }
  },
  "transferSpec": {
      "azureBlobStorageDataSource": {
          "storageAccount": "AZURE_SOURCE_NAME",
          "azureCredentials": {
              "sasToken": "AZURE_SAS_TOKEN",
          },
          "container": "AZURE_CONTAINER",
      },
      "gcsDataSink": {
          "bucketName": "GCS_SINK_NAME"
      }
  }
}
Antwort:
200 OK
{
  "transferJob": [
      {
          "creationTime": "2020-02-14T01:01:00.000000000Z",
          "description": "YOUR DESCRIPTION",
          "name": "transferJobs/JOB_ID",
          "status": "ENABLED",
          "lastModificationTime": "2020-02-14T01:01:00.000000000Z",
          "projectId": "PROJECT_ID",
          "schedule": {
              "scheduleStartDate": {
                  "day": 14
                  "month": 2,
                  "year": 2020
              },
              "scheduleEndDate": {
                  "day": 14,
                  "month": 2,
                  "year": 2020
              },
              "startTimeOfDay": {
                  "hours": 1,
                  "minutes": 1
              }
          },
          "transferSpec": {
              "azureBlobStorageDataSource": {
                  "storageAccount": "AZURE_SOURCE_NAME",
                  "azureCredentials": {
                      "sasToken": "AZURE_SAS_TOKEN",
                  },
                  "container": "AZURE_CONTAINER",
              },
              "objectConditions": {},
              "transferOptions": {}
          }
      }
  ]
}

Übertragung aus einem Dateisystem

Weitere Informationen finden Sie unter Von einem Dateisystem in Cloud Storage übertragen.

Quell- und Zielpfade angeben

Mit Quell- und Zielpfaden können Sie Quell- und Zielverzeichnisse angeben, wenn Sie Daten in Ihren Cloud Storage-Bucket übertragen. Beispiel: Sie haben die Dateien file1.txt und file2.txt und einen Cloud Storage-Bucket namens B. Wenn Sie einen Zielpfad mit dem Namen my-stuff festlegen, befinden sich Ihre Dateien nach der Übertragung in gs://B/my-stuff/file1.txt und gs://B/my-stuff/file2.txt.

Quellpfad angeben

Zum Festlegen eines Quellpfads beim Erstellen eines Übertragungsjobs fügen Sie dem Feld gcsDataSource in der Spezifikation TransferSpec das Feld path hinzu:

{
gcsDataSource: {
  bucketName: "SOURCE_BUCKET",
  path: "SOURCE_PATH/",
},
}

In diesem Beispiel:

  • SOURCE_BUCKET: Der Cloud Storage-Quell-Bucket.
  • SOURCE_PATH: Der Cloud Storage-Quellpfad.

Zielpfad angeben

Zum Festlegen eines Zielordners beim Erstellen eines Übertragungsjobs fügen Sie dem Feld gcsDataSink in der Spezifikation TransferSpec das Feld path hinzu:

{
gcsDataSink: {
  bucketName: "DESTINATION_BUCKET",
  path: "DESTINATION_PATH/",
},
}

In diesem Beispiel:

  • DESTINATION_BUCKET: Cloud Storage-Ziel-Bucket
  • DESTINATION_PATH: Der Cloud Storage-Zielpfad.

Beispiel für eine vollständige Anfrage

Das folgende Beispiel zeigt eine vollständige Anfrage:

POST https://storagetransfer.googleapis.com/v1/transferJobs
{
  "description": "YOUR DESCRIPTION",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "schedule": {
      "scheduleStartDate": {
          "day": 1,
          "month": 1,
          "year": 2015
      },
      "startTimeOfDay": {
          "hours": 1,
          "minutes": 1
      }
  },
  "transferSpec": {
      "gcsDataSource": {
          "bucketName": "GCS_SOURCE_NAME",
          "path": "GCS_SOURCE_PATH",
      },
      "gcsDataSink": {
          "bucketName": "GCS_SINK_NAME",
          "path": "GCS_SINK_PATH",
      },
      "objectConditions": {
          "minTimeElapsedSinceLastModification": "2592000s"
      },
      "transferOptions": {
          "deleteObjectsFromSourceAfterTransfer": true
      }
  }

}

Clientbibliotheken

Die folgenden Beispiele zeigen, wie Sie Storage Transfer Service programmatisch verwenden können mit Go, Java, Node.js und Python.

Wenn Sie Übertragungsjobs programmatisch konfigurieren oder bearbeiten, muss die Zeit in UTC. Weitere Informationen zum Angeben des Zeitplans für einen Übertragungsjob finden Sie unter Zeitplan.

Weitere Informationen zu den Storage Transfer Service-Clientbibliotheken finden Sie unter Erste Schritte mit Storage Transfer Service-Clientbibliotheken.

Übertragung zwischen Cloud Storage-Buckets

In diesem Beispiel erfahren Sie, wie Sie Dateien von einem Cloud Storage-Bucket in einen anderen verschieben. Sie können beispielsweise Daten in einen Bucket an einem anderen Speicherort bewegen.

Go

import (
	"context"
	"fmt"
	"io"
	"time"

	"google.golang.org/genproto/googleapis/type/date"
	"google.golang.org/genproto/googleapis/type/timeofday"
	"google.golang.org/protobuf/types/known/durationpb"

	storagetransfer "cloud.google.com/go/storagetransfer/apiv1"
	"cloud.google.com/go/storagetransfer/apiv1/storagetransferpb"
)

func transferToNearline(w io.Writer, projectID string, gcsSourceBucket string, gcsNearlineSinkBucket string) (*storagetransferpb.TransferJob, error) {
	// Your Google Cloud Project ID
	// projectID := "my-project-id"

	// The name of the GCS bucket to transfer objects from
	// gcsSourceBucket := "my-source-bucket"

	// The name of the Nearline GCS bucket to transfer objects to
	// gcsNearlineSinkBucket := "my-sink-bucket"

	ctx := context.Background()
	client, err := storagetransfer.NewClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("storagetransfer.NewClient: %w", err)
	}
	defer client.Close()

	// A description of this job
	jobDescription := "Transfers objects that haven't been modified in 30 days to a Nearline bucket"

	// The time to start the transfer
	startTime := time.Now().UTC()

	req := &storagetransferpb.CreateTransferJobRequest{
		TransferJob: &storagetransferpb.TransferJob{
			ProjectId:   projectID,
			Description: jobDescription,
			TransferSpec: &storagetransferpb.TransferSpec{
				DataSink: &storagetransferpb.TransferSpec_GcsDataSink{
					GcsDataSink: &storagetransferpb.GcsData{BucketName: gcsNearlineSinkBucket}},
				DataSource: &storagetransferpb.TransferSpec_GcsDataSource{
					GcsDataSource: &storagetransferpb.GcsData{BucketName: gcsSourceBucket},
				},
				ObjectConditions: &storagetransferpb.ObjectConditions{
					MinTimeElapsedSinceLastModification: &durationpb.Duration{Seconds: 2592000 /*30 days */},
				},
				TransferOptions: &storagetransferpb.TransferOptions{DeleteObjectsFromSourceAfterTransfer: true},
			},
			Schedule: &storagetransferpb.Schedule{
				ScheduleStartDate: &date.Date{
					Year:  int32(startTime.Year()),
					Month: int32(startTime.Month()),
					Day:   int32(startTime.Day()),
				},
				ScheduleEndDate: &date.Date{
					Year:  int32(startTime.Year()),
					Month: int32(startTime.Month()),
					Day:   int32(startTime.Day()),
				},
				StartTimeOfDay: &timeofday.TimeOfDay{
					Hours:   int32(startTime.Hour()),
					Minutes: int32(startTime.Minute()),
					Seconds: int32(startTime.Second()),
				},
			},
			Status: storagetransferpb.TransferJob_ENABLED,
		},
	}
	resp, err := client.CreateTransferJob(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("failed to create transfer job: %w", err)
	}
	if _, err = client.RunTransferJob(ctx, &storagetransferpb.RunTransferJobRequest{
		ProjectId: projectID,
		JobName:   resp.Name,
	}); err != nil {
		return nil, fmt.Errorf("failed to run transfer job: %w", err)
	}
	fmt.Fprintf(w, "Created and ran transfer job from %v to %v with name %v", gcsSourceBucket, gcsNearlineSinkBucket, resp.Name)
	return resp, nil
}

Java

Sie suchen nach älteren Beispielen? Weitere Informationen finden Sie im Migration Transfer Service-Migrationsleitfaden.

import com.google.protobuf.Duration;
import com.google.storagetransfer.v1.proto.StorageTransferServiceClient;
import com.google.storagetransfer.v1.proto.TransferProto.CreateTransferJobRequest;
import com.google.storagetransfer.v1.proto.TransferTypes.GcsData;
import com.google.storagetransfer.v1.proto.TransferTypes.ObjectConditions;
import com.google.storagetransfer.v1.proto.TransferTypes.Schedule;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob.Status;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferOptions;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferSpec;
import com.google.type.Date;
import com.google.type.TimeOfDay;
import java.io.IOException;
import java.util.Calendar;

public class TransferToNearline {
  /**
   * Creates a one-off transfer job that transfers objects in a standard GCS bucket that are more
   * than 30 days old to a Nearline GCS bucket.
   */
  public static void transferToNearline(
      String projectId,
      String jobDescription,
      String gcsSourceBucket,
      String gcsNearlineSinkBucket,
      long startDateTime)
      throws IOException {

    // Your Google Cloud Project ID
    // String projectId = "your-project-id";

    // A short description of this job
    // String jobDescription = "Sample transfer job of old objects to a Nearline GCS bucket.";

    // The name of the source GCS bucket to transfer data from
    // String gcsSourceBucket = "your-gcs-source-bucket";

    // The name of the Nearline GCS bucket to transfer old objects to
    // String gcsSinkBucket = "your-nearline-gcs-bucket";

    // What day and time in UTC to start the transfer, expressed as an epoch date timestamp.
    // If this is in the past relative to when the job is created, it will run the next day.
    // long startDateTime =
    //     new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2000-01-01 00:00:00").getTime();

    // Parse epoch timestamp into the model classes
    Calendar startCalendar = Calendar.getInstance();
    startCalendar.setTimeInMillis(startDateTime);
    // Note that this is a Date from the model class package, not a java.util.Date
    Date date =
        Date.newBuilder()
            .setYear(startCalendar.get(Calendar.YEAR))
            .setMonth(startCalendar.get(Calendar.MONTH) + 1)
            .setDay(startCalendar.get(Calendar.DAY_OF_MONTH))
            .build();
    TimeOfDay time =
        TimeOfDay.newBuilder()
            .setHours(startCalendar.get(Calendar.HOUR_OF_DAY))
            .setMinutes(startCalendar.get(Calendar.MINUTE))
            .setSeconds(startCalendar.get(Calendar.SECOND))
            .build();

    TransferJob transferJob =
        TransferJob.newBuilder()
            .setDescription(jobDescription)
            .setProjectId(projectId)
            .setTransferSpec(
                TransferSpec.newBuilder()
                    .setGcsDataSource(GcsData.newBuilder().setBucketName(gcsSourceBucket))
                    .setGcsDataSink(GcsData.newBuilder().setBucketName(gcsNearlineSinkBucket))
                    .setObjectConditions(
                        ObjectConditions.newBuilder()
                            .setMinTimeElapsedSinceLastModification(
                                Duration.newBuilder().setSeconds(2592000 /* 30 days */)))
                    .setTransferOptions(
                        TransferOptions.newBuilder().setDeleteObjectsFromSourceAfterTransfer(true)))
            .setSchedule(Schedule.newBuilder().setScheduleStartDate(date).setStartTimeOfDay(time))
            .setStatus(Status.ENABLED)
            .build();

    // Create a Transfer Service client
    StorageTransferServiceClient storageTransfer = StorageTransferServiceClient.create();

    // Create the transfer job
    TransferJob response =
        storageTransfer.createTransferJob(
            CreateTransferJobRequest.newBuilder().setTransferJob(transferJob).build());

    System.out.println("Created transfer job from standard bucket to Nearline bucket:");
    System.out.println(response.toString());
  }
}

Node.js


// Imports the Google Cloud client library
const {
  StorageTransferServiceClient,
} = require('@google-cloud/storage-transfer');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of the Google Cloud Platform Project that owns the job
// projectId = 'my-project-id'

// A useful description for your transfer job
// description = 'My transfer job'

// Google Cloud Storage source bucket name
// gcsSourceBucket = 'my-gcs-source-bucket'

// Google Cloud Storage destination bucket name
// gcsSinkBucket = 'my-gcs-destination-bucket'

// Date to start daily migration
// startDate = new Date()

// Creates a client
const client = new StorageTransferServiceClient();

/**
 * Create a daily migration from a GCS bucket to another GCS bucket for
 * objects untouched for 30+ days.
 */
async function createDailyNearline30DayMigration() {
  // Runs the request and creates the job
  const [transferJob] = await client.createTransferJob({
    transferJob: {
      projectId,
      description,
      status: 'ENABLED',
      schedule: {
        scheduleStartDate: {
          day: startDate.getDate(),
          month: startDate.getMonth() + 1,
          year: startDate.getFullYear(),
        },
      },
      transferSpec: {
        gcsDataSource: {
          bucketName: gcsSourceBucket,
        },
        gcsDataSink: {
          bucketName: gcsSinkBucket,
        },
        objectConditions: {
          minTimeElapsedSinceLastModification: {
            seconds: 2592000, // 30 days
          },
        },
        transferOptions: {
          deleteObjectsFromSourceAfterTransfer: true,
        },
      },
    },
  });

  console.log(`Created transferJob: ${transferJob.name}`);
}

createDailyNearline30DayMigration();

Python

Sie suchen nach älteren Beispielen? Weitere Informationen finden Sie im Migration Transfer Service-Migrationsleitfaden.

from datetime import datetime

from google.cloud import storage_transfer
from google.protobuf.duration_pb2 import Duration


def create_daily_nearline_30_day_migration(
    project_id: str,
    description: str,
    source_bucket: str,
    sink_bucket: str,
    start_date: datetime,
):
    """Create a daily migration from a GCS bucket to a Nearline GCS bucket
    for objects untouched for 30 days."""

    client = storage_transfer.StorageTransferServiceClient()

    # The ID of the Google Cloud Platform Project that owns the job
    # project_id = 'my-project-id'

    # A useful description for your transfer job
    # description = 'My transfer job'

    # Google Cloud Storage source bucket name
    # source_bucket = 'my-gcs-source-bucket'

    # Google Cloud Storage destination bucket name
    # sink_bucket = 'my-gcs-destination-bucket'

    transfer_job_request = storage_transfer.CreateTransferJobRequest(
        {
            "transfer_job": {
                "project_id": project_id,
                "description": description,
                "status": storage_transfer.TransferJob.Status.ENABLED,
                "schedule": {
                    "schedule_start_date": {
                        "day": start_date.day,
                        "month": start_date.month,
                        "year": start_date.year,
                    }
                },
                "transfer_spec": {
                    "gcs_data_source": {
                        "bucket_name": source_bucket,
                    },
                    "gcs_data_sink": {
                        "bucket_name": sink_bucket,
                    },
                    "object_conditions": {
                        "min_time_elapsed_since_last_modification": Duration(
                            seconds=2592000  # 30 days
                        )
                    },
                    "transfer_options": {
                        "delete_objects_from_source_after_transfer": True
                    },
                },
            }
        }
    )

    result = client.create_transfer_job(transfer_job_request)
    print(f"Created transferJob: {result.name}")

Übertragung von Amazon S3 zu Cloud Storage

Weitere Informationen finden Sie unter Übertragung von Amazon S3 zu Cloud Storage.

Übertragung zwischen Microsoft Azure Blob Storage und Cloud Storage

In diesem Beispiel erfahren Sie, wie Sie Dateien von Microsoft Azure Storage in ein Cloud Storage-Bucket verschieben und dabei ein Microsoft Azure Storage Shared Access Signature-Token (SAS) verwenden.

Weitere Informationen zu Microsoft Azure Storage SAS finden Sie unter Zugriff auf Azure Storage-Ressourcen mit SAS (Shared Access Signature) gewähren.

Informieren Sie sich dazu in den Abschnitten Zugriff auf Microsoft Azure Storage konfigurieren und Preise über die Auswirkungen einer Datenverschiebung von Microsoft Azure Storage nach Cloud Storage.

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Storage Transfer Service finden Sie unter Storage Transfer Service-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Storage Transfer Service Go API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich beim Storage Transfer Service zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import (
	"context"
	"fmt"
	"io"
	"os"

	storagetransfer "cloud.google.com/go/storagetransfer/apiv1"
	"cloud.google.com/go/storagetransfer/apiv1/storagetransferpb"
)

func transferFromAzure(w io.Writer, projectID string, azureStorageAccountName string, azureSourceContainer string, gcsSinkBucket string) (*storagetransferpb.TransferJob, error) {
	// Your Google Cloud Project ID.
	// projectID := "my-project-id"

	// The name of your Azure Storage account.
	// azureStorageAccountName := "my-azure-storage-acc"

	// The name of the Azure container to transfer objects from.
	// azureSourceContainer := "my-source-container"

	// The name of the GCS bucket to transfer objects to.
	// gcsSinkBucket := "my-sink-bucket"

	ctx := context.Background()
	client, err := storagetransfer.NewClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("storagetransfer.NewClient: %w", err)
	}
	defer client.Close()

	// The Azure SAS token, should be accessed via environment variable for security
	azureSasToken := os.Getenv("AZURE_SAS_TOKEN")

	req := &storagetransferpb.CreateTransferJobRequest{
		TransferJob: &storagetransferpb.TransferJob{
			ProjectId: projectID,
			TransferSpec: &storagetransferpb.TransferSpec{
				DataSource: &storagetransferpb.TransferSpec_AzureBlobStorageDataSource{
					AzureBlobStorageDataSource: &storagetransferpb.AzureBlobStorageData{
						StorageAccount: azureStorageAccountName,
						AzureCredentials: &storagetransferpb.AzureCredentials{
							SasToken: azureSasToken,
						},
						Container: azureSourceContainer,
					},
				},
				DataSink: &storagetransferpb.TransferSpec_GcsDataSink{
					GcsDataSink: &storagetransferpb.GcsData{BucketName: gcsSinkBucket}},
			},
			Status: storagetransferpb.TransferJob_ENABLED,
		},
	}
	resp, err := client.CreateTransferJob(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("failed to create transfer job: %w", err)
	}
	if _, err = client.RunTransferJob(ctx, &storagetransferpb.RunTransferJobRequest{
		ProjectId: projectID,
		JobName:   resp.Name,
	}); err != nil {
		return nil, fmt.Errorf("failed to run transfer job: %w", err)
	}
	fmt.Fprintf(w, "Created and ran transfer job from %v to %v with name %v", azureSourceContainer, gcsSinkBucket, resp.Name)
	return resp, nil
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Storage Transfer Service finden Sie unter Storage Transfer Service-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Storage Transfer Service Java API.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Storage Transfer Service zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import com.google.storagetransfer.v1.proto.StorageTransferServiceClient;
import com.google.storagetransfer.v1.proto.TransferProto;
import com.google.storagetransfer.v1.proto.TransferProto.RunTransferJobRequest;
import com.google.storagetransfer.v1.proto.TransferTypes.AzureBlobStorageData;
import com.google.storagetransfer.v1.proto.TransferTypes.AzureCredentials;
import com.google.storagetransfer.v1.proto.TransferTypes.GcsData;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob.Status;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferSpec;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class TransferFromAzure {
  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Your Google Cloud Project ID
    String projectId = "my-project-id";

    // Your Azure Storage Account name
    String azureStorageAccount = "my-azure-account";

    // The Azure source container to transfer data from
    String azureSourceContainer = "my-source-container";

    // The GCS bucket to transfer data to
    String gcsSinkBucket = "my-sink-bucket";

    transferFromAzureBlobStorage(
        projectId, azureStorageAccount, azureSourceContainer, gcsSinkBucket);
  }

  /**
   * Creates and runs a transfer job to transfer all data from an Azure container to a GCS bucket.
   */
  public static void transferFromAzureBlobStorage(
      String projectId,
      String azureStorageAccount,
      String azureSourceContainer,
      String gcsSinkBucket)
      throws IOException, ExecutionException, InterruptedException {

    // Your Azure SAS token, should be accessed via environment variable
    String azureSasToken = System.getenv("AZURE_SAS_TOKEN");

    TransferSpec transferSpec =
        TransferSpec.newBuilder()
            .setAzureBlobStorageDataSource(
                AzureBlobStorageData.newBuilder()
                    .setAzureCredentials(
                        AzureCredentials.newBuilder().setSasToken(azureSasToken).build())
                    .setContainer(azureSourceContainer)
                    .setStorageAccount(azureStorageAccount))
            .setGcsDataSink(GcsData.newBuilder().setBucketName(gcsSinkBucket).build())
            .build();

    TransferJob transferJob =
        TransferJob.newBuilder()
            .setProjectId(projectId)
            .setStatus(Status.ENABLED)
            .setTransferSpec(transferSpec)
            .build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources,
    // or use "try-with-close" statement to do this automatically.
    try (StorageTransferServiceClient storageTransfer = StorageTransferServiceClient.create()) {
      // Create the transfer job
      TransferJob response =
          storageTransfer.createTransferJob(
              TransferProto.CreateTransferJobRequest.newBuilder()
                  .setTransferJob(transferJob)
                  .build());

      // Run the created job
      storageTransfer
          .runTransferJobAsync(
              RunTransferJobRequest.newBuilder()
                  .setProjectId(projectId)
                  .setJobName(response.getName())
                  .build())
          .get();

      System.out.println(
          "Created and ran a transfer job from "
              + azureSourceContainer
              + " to "
              + gcsSinkBucket
              + " with "
              + "name "
              + response.getName());
    }
  }
}

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für Storage Transfer Service finden Sie unter Storage Transfer Service-Clientbibliotheken. Weitere Informationen finden Sie in der Storage Transfer Service Node.js API Referenzdokumentation.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Storage Transfer Service zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


// Imports the Google Cloud client library
const {
  StorageTransferServiceClient,
} = require('@google-cloud/storage-transfer');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of the Google Cloud Platform Project that owns the job
// projectId = 'my-project-id'

// A useful description for your transfer job
// description = 'My transfer job'

// Azure Storage Account name
// azureStorageAccount = 'accountname'

// Azure Storage Account name
// azureSourceContainer = 'my-azure-source-bucket'

// Azure Shared Access Signature token
// azureSASToken = '?sv=...'

// Google Cloud Storage destination bucket name
// gcsSinkBucket = 'my-gcs-destination-bucket'

// Creates a client
const client = new StorageTransferServiceClient();

/**
 * Creates a one-time transfer job from Azure Blob Storage to Google Cloud Storage.
 */
async function transferFromBlobStorage() {
  // Setting the start date and the end date as the same time creates a
  // one-time transfer
  const now = new Date();
  const oneTimeSchedule = {
    day: now.getDate(),
    month: now.getMonth() + 1,
    year: now.getFullYear(),
  };

  // Runs the request and creates the job
  const [transferJob] = await client.createTransferJob({
    transferJob: {
      projectId,
      description,
      status: 'ENABLED',
      schedule: {
        scheduleStartDate: oneTimeSchedule,
        scheduleEndDate: oneTimeSchedule,
      },
      transferSpec: {
        azureBlobStorageDataSource: {
          azureCredentials: {
            sasToken: azureSASToken,
          },
          container: azureSourceContainer,
          storageAccount: azureStorageAccount,
        },
        gcsDataSink: {
          bucketName: gcsSinkBucket,
        },
      },
    },
  });

  console.log(
    `Created and ran a transfer job from '${azureSourceContainer}' to '${gcsSinkBucket}' with name ${transferJob.name}`
  );
}

transferFromBlobStorage();

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Storage Transfer Service finden Sie unter Storage Transfer Service-Clientbibliotheken Weitere Informationen finden Sie in der Storage Transfer Service Python API Referenzdokumentation.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich beim Storage Transfer Service zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from datetime import datetime

from google.cloud import storage_transfer


def create_one_time_azure_transfer(
    project_id: str,
    description: str,
    azure_storage_account: str,
    azure_sas_token: str,
    source_container: str,
    sink_bucket: str,
):
    """Creates a one-time transfer job from Azure Blob Storage to Google Cloud
    Storage."""

    # Initialize client that will be used to create storage transfer requests.
    # This client only needs to be created once, and can be reused for
    # multiple requests.
    client = storage_transfer.StorageTransferServiceClient()

    # The ID of the Google Cloud Platform Project that owns the job
    # project_id = 'my-project-id'

    # A useful description for your transfer job
    # description = 'My transfer job'

    # Azure Storage Account name
    # azure_storage_account = 'accountname'

    # Azure Shared Access Signature token
    # azure_sas_token = '?sv=...'

    # Azure Blob source container name
    # source_container = 'my-azure-source-bucket'

    # Google Cloud Storage destination bucket name
    # sink_bucket = 'my-gcs-destination-bucket'

    now = datetime.utcnow()
    # Setting the start date and the end date as
    # the same time creates a one-time transfer
    one_time_schedule = {"day": now.day, "month": now.month, "year": now.year}

    transfer_job_request = storage_transfer.CreateTransferJobRequest(
        {
            "transfer_job": {
                "project_id": project_id,
                "description": description,
                "status": storage_transfer.TransferJob.Status.ENABLED,
                "schedule": {
                    "schedule_start_date": one_time_schedule,
                    "schedule_end_date": one_time_schedule,
                },
                "transfer_spec": {
                    "azure_blob_storage_data_source": {
                        "storage_account": azure_storage_account,
                        "azure_credentials": {"sas_token": azure_sas_token},
                        "container": source_container,
                    },
                    "gcs_data_sink": {
                        "bucket_name": sink_bucket,
                    },
                },
            }
        }
    )

    result = client.create_transfer_job(transfer_job_request)
    print(f"Created transferJob: {result.name}")

Übertragung aus einem Dateisystem

Weitere Informationen finden Sie unter Von einem Dateisystem in Cloud Storage übertragen.