Zugriff auf eine Quelle konfigurieren: Amazon S3

Sie können den Zugriff auf einen Amazon S3-Bucket mit einer der folgenden Methoden einrichten:

Unterstützte Regionen

Storage Transfer Service kann Daten aus den folgenden Amazon S3-Regionen übertragen: af-south-1, ap-east-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-south-2, ap-southeast-1, ap-southeast-2, ap-southeast-3, ca-central-1, eu-central-1, eu-central-2, eu-north-1, eu-south-1, eu-south-2, eu-west-3, ap-northeast-1, ap-northeast-1, ap-northeast-1

Erforderliche Berechtigungen

Damit Sie Storage Transfer Service verwenden können, um Daten aus einem Amazon S3-Bucket zu verschieben, muss Ihr Nutzerkonto oder Ihre Rolle für föderierte Identitäten die entsprechenden Berechtigungen für den Bucket haben:

Berechtigung Beschreibung Nutzung
s3:ListBucket Ermöglicht Storage Transfer Service, Objekte im Bucket aufzulisten. Immer erforderlich.
s3:GetBucketLocation Ermöglicht es Storage Transfer Service, den Standort des Buckets abzurufen. Immer erforderlich.
s3:GetObject Ermöglicht Storage Transfer Service, Objekte im Bucket zu lesen. Erforderlich, wenn Sie die aktuelle Version aller Objekte übertragen Verwenden Sie s3:GetObjectVersion, wenn Ihr Manifest eine Objektversion angibt.
s3:GetObjectVersion Ermöglicht Storage Transfer Service, bestimmte Versionen von Objekten im Bucket zu lesen. Erforderlich, wenn das Manifest eine Objektversion angibt Verwenden Sie andernfalls s3:GetObject.
s3:DeleteObject Ermöglicht es Storage Transfer Service, Objekte im Bucket zu löschen. Erforderlich, wenn Sie deleteObjectsFromSourceAfterTransfer auf true festlegen.

Mit Anmeldedaten authentifizieren

So authentifizieren Sie sich mit einer Zugriffsschlüssel-ID und einem geheimen Schlüssel bei AWS:

  1. Erstellen Sie einen AWS IAM-Nutzer (AWS Identity and Access Management) mit einem Namen, den Sie leicht wiedererkennen, z. B. transfer-user.

  2. Wählen Sie für den AWS-Zugriffstyp Zugriffsschlüssel – programmatischer Zugriff aus.

  3. Weisen Sie dem Nutzer eine der folgenden Rollen zu:

    • AmazonS3ReadOnlyAccess bietet Lesezugriff auf die Quelle. Dies ermöglicht Übertragungen, unterstützt jedoch nicht das Löschen von Objekten in der Quelle, nachdem die Übertragung abgeschlossen ist.
    • AmazonS3FullAccess, wenn die Übertragung so konfiguriert ist, dass Objekte an der Quelle gelöscht werden.
    • Eine benutzerdefinierte Rolle mit den entsprechenden Berechtigungen aus der Tabelle Erforderliche Berechtigungen oben. Die JSON-Datei für die Mindestberechtigungen sieht wie im folgenden Beispiel aus:

      {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
                "Resource": [
                    "arn:aws:s3:::AWS_BUCKET_NAME/*",
                    "arn:aws:s3:::AWS_BUCKET_NAME"
                ]
            }
        ]
      }
      
  4. Notieren Sie sich die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel, wenn der Nutzer erfolgreich erstellt wurde.

Wie Sie die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel an Storage Transfer Service übergeben, hängt von der Schnittstelle ab, über die Sie die Übertragung starten.

Cloud Console

Geben Sie die Werte direkt in das Formular zum Erstellen von Übertragungsjobs ein.

Weitere Informationen finden Sie unter Übertragungen erstellen.

gcloud-CLI

Erstellen Sie eine JSON-Datei im folgenden Format:

{
  "accessKeyId": "AWS_ACCESS_KEY_ID",
  "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}

Übergeben Sie den Speicherort der Datei mit dem Flag source-creds-file an den Befehl gcloud transfer jobs create:

gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
  --source-creds-file=PATH/TO/KEYFILE.JSON

REST API

Das Objekt transferSpec muss die Schlüsselinformationen als Teil des Objekts awsS3DataSource enthalten:

"transferSpec": {
  "awsS3DataSource": {
    "bucketName": "AWS_SOURCE_NAME",
    "awsAccessKey": {
      "accessKeyId": "AWS_ACCESS_KEY_ID",
      "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
    }
  },
  "gcsDataSink": {
    "bucketName": "GCS_SINK_NAME"
  }
}

Clientbibliotheken

Beispiele finden Sie auf der Seite Übertragungen erstellen.

Mit föderierter Identität authentifizieren

So verwenden Sie die föderierte Identität zur Authentifizierung bei AWS:

  1. Erstellen Sie eine neue IAM-Rolle in AWS.

  2. Wählen Sie als vertrauenswürdigen Entitätstyp Benutzerdefinierte Vertrauensrichtlinie aus.

  3. Kopieren Sie die folgende Vertrauensrichtlinie und fügen Sie sie ein:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "accounts.google.com"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "accounts.google.com:sub": "SUBJECT_ID"
            }
          }
        }
      ]
    }
    
  4. Ersetzen Sie SUBJECT_ID durch die subjectID des von Google verwalteten Dienstkontos, das automatisch erstellt wird, wenn Sie Storage Transfer Service verwenden. So rufen Sie subjectID ab:

    1. Rufe die googleServiceAccounts.get-Referenzseite auf.

      Es wird ein interaktives Steuerfeld mit dem Titel Diese Methode testen geöffnet.

    2. Geben Sie im Steuerfeld unter Anfrageparameter Ihre Projekt-ID ein. Das Projekt, das Sie hier angeben, muss das Projekt sein, mit dem Sie den Storage Transfer Service verwalten.

    3. Klicken Sie auf Execute. Die subjectId ist in der Antwort enthalten.

  5. Weisen Sie der Rolle eine der folgenden Berechtigungsrichtlinien zu:

    • AmazonS3ReadOnlyAccess bietet Lesezugriff auf die Quelle. Dies ermöglicht Übertragungen, unterstützt jedoch nicht das Löschen von Objekten in der Quelle, nachdem die Übertragung abgeschlossen ist.
    • AmazonS3FullAccess, wenn die Übertragung so konfiguriert ist, dass Objekte an der Quelle gelöscht werden.
    • Eine benutzerdefinierte Rolle mit den entsprechenden Berechtigungen aus der Tabelle Erforderliche Berechtigungen oben. Die JSON-Datei für die Mindestberechtigungen sieht wie im folgenden Beispiel aus:

      {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
                "Resource": [
                    "arn:aws:s3:::AWS_BUCKET_NAME/*",
                    "arn:aws:s3:::AWS_BUCKET_NAME"
                ]
            }
        ]
      }
      
  6. Weisen Sie der Rolle einen Namen zu und erstellen Sie die Rolle.

  7. Rufen Sie nach dem Erstellen die Rollendetails auf, um den Amazon-Ressourcennamen (ARN) abzurufen. Notieren Sie sich diesen Wert. Er hat das Format arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME.

Wie Sie den ARN an Storage Transfer Service übergeben, hängt von der Schnittstelle ab, die Sie zum Initiieren der Übertragung verwenden.

Cloud Console

Geben Sie den ARN direkt in das Formular zum Erstellen von Übertragungsjobs ein.

Weitere Informationen finden Sie unter Übertragungen erstellen.

gcloud-CLI

Erstellen Sie eine JSON-Datei im folgenden Format:

{
  "roleArn": "ARN"
}

Übergeben Sie den Speicherort der Datei mit dem Flag source-creds-file an den Befehl gcloud transfer jobs create:

gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
  --source-creds-file=PATH/TO/ARNFILE.JSON

REST API

Das Objekt transferSpec muss die ARN-Informationen als Teil des Objekts awsS3DataSource enthalten:

"transferSpec": {
  "awsS3DataSource": {
    "bucketName": "AWS_SOURCE_NAME",
    "roleArn": "ARN"
  },
  "gcsDataSink": {
    "bucketName": "GCS_SINK_NAME"
  }
}

Clientbibliotheken

Beispiele finden Sie auf der Seite Übertragungen erstellen.

IP-Einschränkungen

Wenn Ihr AWS-Projekt IP-Einschränkungen für den Zugriff auf den Speicher verwendet, müssen Sie die von Storage Transfer Service-Workern verwendeten IP-Bereiche der Liste der zulässigen IP-Adressen hinzufügen.

Da sich diese IP-Bereiche ändern können, veröffentlichen wir die aktuellen Werte als JSON-Datei an einer permanenten Adresse:

https://www.gstatic.com/storage-transfer-service/ipranges.json

Wenn der Datei ein neuer Bereich hinzugefügt wird, warten wir mindestens 7 Tage, bevor Sie diesen Bereich für Anfragen vom Storage Transfer Service verwenden.

Wir empfehlen, Daten aus diesem Dokument mindestens einmal pro Woche abzurufen, damit Ihre Sicherheitskonfiguration immer auf dem neuesten Stand ist. Ein Beispiel für Python-Skripts, das IP-Bereiche aus einer JSON-Datei abruft, finden Sie in diesem Artikel der Virtual Private Cloud-Dokumentation.

Zum Hinzufügen dieser Bereiche als zulässige IP-Adressen verwenden Sie das Feld Condition in einer Bucket-Richtlinie, wie in der AWS S3-Dokumentation beschrieben: Zugriff anhand bestimmter IP-Adressen verwalten.