Wie kann ich AWS DataSync verwenden, um die Daten zu oder von einem kontenübergreifenden Amazon-S3-Standort zu übertragen?

Letzte Aktualisierung: 14.12.2022

Ich möchte AWS DataSync verwenden, um Daten zu oder von einem kontenübergreifenden Amazon Simple Storage (Amazon S3)-Bucket zu übertragen.

Kurzbeschreibung

Um DataSync für die kontenübergreifende Datenübertragung zu verwenden, gehen Sie wie folgt vor:

  1. Verwenden Sie das AWS Command Line Interface (AWS CLI) oder das AWS SDK, um einen kontenübergreifenden Amazon S3-Standort in DataSync zu erstellen.
  2. Erstellen Sie eine DataSync-Aufgabe, die Daten vom Quell-Bucket zum Ziel-Bucket überträgt.

Beachten Sie die folgenden Einschränkungen bei der Verwendung von DataSync zum Übertragen von Daten zwischen Buckets, die zu verschiedenen S3-Konten gehören:

  • DataSync wendet beim Übertragen von Daten an einen kontenübergreifenden Ziel-Bucket nicht die Zugriffssteuerungsliste (ACL) bucket-owner-full-control an. Das führt zu Problemen mit dem Objektbesitz im Ziel-Bucket.
  • Für einen kontenübergreifenden S3-Standort ist nur ein kontenübergreifender Bucket in derselben Region möglich. Wenn Sie einen konten- und regionsübergreifenden S3-Standort verwenden, erhalten Sie die Fehler GetBucketLocation oder Verbindung zu S3-Endpunkt kann nicht aufgebaut werden. Wenn also eine Aufgabe im Quellkonto erstellt wird, muss die Aufgabe in derselben Region wie der Ziel-Bucket erstellt werden. Wenn eine Aufgabe im Zielkonto erstellt wird, muss die Aufgabe in derselben Region wie der Quell-Bucket erstellt werden.
  • Sie können die kontenübergreifende Übergaberolle nicht verwenden, um auf den kontenübergreifenden S3-Standort zuzugreifen.

Sie können die DataSync-Aufgabe im Zielkonto so konfigurieren, dass Daten aus der Quelle abgerufen werden, indem Sie die vorherigen Einschränkungen umgehen.

Auflösung

Führen Sie die erforderlichen Prüfungen durch

Angenommen, das Quellkonto verfügt über den kontenübergreifenden Quell-S3-Bucket und das Zielkonto verfügt über den S3-Ziel-Bucket und die DataSync-Aufgabe. Führen Sie die folgenden Kontrollen durch:

Benutzer/Rolle für AWS Identity and Management (IAM): Prüfen Sie, ob die folgenden IAM-Benutzer oder -Rollen über die erforderlichen Berechtigungen verfügen:

  • Der Benutzer oder die Rolle, mit deren Hilfe Sie den kontoübergreifenden S3-Standort erstellen
  • Die Rolle, die Sie dem S3-Standort zugewiesen haben

Quell-Bucket-Richtlinie: Stellen Sie sicher, dass die Quell-Bucket-Richtlinie beiden IAM-Benutzern/Rollen im Zielkonto den Zugriff auf den Bucket ermöglicht. Die folgende Beispielrichtlinie gewährt beiden IAM-Benutzern/Rollen den Zugriff auf den Quell-Bucket:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::1111222233334444:role/datasync-config-role",
          "arn:aws:iam::1111222233334444:role/datasync-transfer-role"
        ]
      },
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads"
      ],
      "Resource": [
        "arn:aws:s3:::example-source-bucket"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::1111222233334444:role/datasync-config-role",
          "arn:aws:iam::1111222233334444:role/datasync-transfer-role"
        ]
      },
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObjectTagging",
        "s3:GetObjectTagging",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::example-source-bucket/*"
      ]
    }
  ]
}

Ersetzen Sie unbedingt die folgenden Werte in den vorhergehenden Richtlinien:

  • Beispiel-Quell-Bucket mit dem Namen des Quell-Buckets
  • 1111222233334444 mit der Konto-ID des Zielkontos
  • datasync-config-role mit der IAM-Rolle, die für die DataSync-Konfiguration verwendet wird (Beispiel: Erstellen eines S3-Quellspeicherorts und der Aufgabe in DataSync)
    Hinweis: Sie können auch einen IAM-Benutzer verwenden. In diesem Artikel wird die Verwendung der IAM-Rolle behandelt.
  • dataysnc-transfer-role mit der IAM-Rolle, die beim Erstellen des S3-Quellspeicherorts zugewiesen wurde
    Hinweis: DataSync verwendet diese Rolle, um auf die kontenübergreifenden Daten zuzugreifen.

S3-Zielspeicherort:

Verwenden Sie AWS CLI oder SDK, um einen kontenübergreifenden S3-Quellspeicherort in DataSync zu erstellen

Hinweis: Das Erstellen eines kontenübergreifenden S3-Standorts wird in der AWS Management Console nicht unterstützt.

Sie können den kontenübergreifenden S3-Speicherort mit einer der folgenden Methoden erstellen:

  • Verwenden Sie eine JSON-Konfigurationsdatei.
  • Verwenden Sie die Optionen des AWS-CLI-Befehls.

Verwenden Sie eine JSON-Konfigurationsdatei

1.    Erstellen Sie eine Konfigurations-JSON-Datei input.template für den kontenübergreifenden S3-Speicherort mit den folgenden Parametern:

{
  "Subdirectory": "",
  "S3BucketArn": "arn:aws:s3:::[Source bucket]",
  "S3StorageClass": "STANDARD",
  "S3Config": {
    "BucketAccessRoleArn": "arn:aws:iam::1111222233334444:role/datasync-transfer-role"
  }
}

2.    Erstellen Sie einen S3-Speicherort, indem Sie den folgenden AWS-CLI-Befehl ausführen:

aws datasync create-location-s3 --cli-input-json file://input.template --region example-DataSync-Region

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS CLI verwenden.

Weitere Informationen finden Sie unter create-location-s3.

Wenn der S3-Speicherort erstellt ist, wird die folgende Ausgabe angezeigt:

{
"LocationArn": "arn:aws:datasync:example-Region:123456789012:location/loc-0f8xxxxxxxxe4821"
}

Beachten Sie, dass 123456789012 die Konto-ID des Quellkontos ist.

Verwenden Sie die Optionen des AWS-CLI-Befehls

Führen Sie den folgenden AWS-CLI-Befehl mit den entsprechenden Optionen aus:

aws datasync create-location-s3 --s3-bucket-arn arn:aws:s3:::example-source-bucket --s3-storage-class STANDARD --s3-config BucketAccessRoleArn="arn:aws:iam::1111222233334444:role/datasync-transfer-role" --region example-DataSync-Region

Ersetzen Sie unbedingt die folgenden Werte in dem Befehl:

  • Beispiel-Quell-Bucket mit dem Namen des Quell-Buckets
  • Beispiel-DataSync-Region mit der Region, in der Sie die DataSync-Aufgabe erstellen.

Erstellen Sie eine DataSync-Aufgabe

Konfigurieren Sie die DataSync-Aufgabe und starten Sie die Aufgabe über die DataSync-Konsole. Weitere Informationen finden Sie unter Starten Ihrer AWS-DataSync-Aufgabe.

Bekannte Fehler und Lösungen

Fehler: Fehler beim Erstellen von DataSync Location S3: UngültigeAnfragenausnahme: Bitte geben Sie einen Bucket in der Region xxx an, in der DataSync derzeit verwendet wird

Wenn Sie diesen Fehler erhalten, überprüfen Sie, ob der Bucket und die IAM-Richtlinien die folgenden erforderlichen Berechtigungen enthalten:

"Action": [
"s3:GetBucketLocation",
"s3:ListBucket",
"s3:ListBucketMultipartUploads"
]

Wenn Sie diesen Fehler bei der Verwendung eines kontenübergreifenden Buckets erhalten, stellen Sie sicher, dass sich die Buckets in derselben Region wie Ihre DataSync-Aufgabe befinden

Besitzprobleme bei S3-Objekten

DataSync unterstützt nicht die Verwendung eines kontenübergreifenden Buckets als Zielspeicherort. Daher können Sie die ACL-Bucket-Besitzer-Vollsteuerung nicht verwenden. Wenn die DataSync-Aufgabe vom Quell-Bucket-Konto aus ausgeführt wird, weisen die in das Ziel-Bucket-Konto hochgeladenen Objekte möglicherweise das Problem des Objektbesitzes auf. Wenn der Ziel-Bucket keine Objekte hat, die ACLs verwenden, sollten Sie erwägen, die ACLs im Ziel-Bucket zu deaktivieren, um dieses Problem zu beheben. Weitere Informationen finden Sie unter Steuern des Besitzes von Objekten und Deaktivieren von ACLs für Ihren Bucket. Andernfalls empfiehlt es sich, die DataSync-Aufgabe im Zielkonto so zu konfigurieren, dass Daten aus der Quelle abgerufen werden.


War Ihnen dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?