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

Letzte Aktualisierung: 26.04.2022

Ich möchte AWS DataSync verwenden, um Daten in oder aus 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-Inhaber-Komplettkontrolle an, was zu Problemen mit dem Objektbesitz im Ziel-Bucket führt.
  • Für einen kontenübergreifenden S3-Standort ist nur ein kontenübergreifender Bucket in derselben Region möglich. Wenn Sie einen kontenübergreifenden und regionsübergreifenden S3-Standort verwenden, erhalten Sie die Fehler GetBucketLocation oder Verbindung zu S3-Endpunkt kann nicht aufgebaut 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 von AWS Identity und Management (IAM): Prüfen Sie, ob der IAM-Benutzer oder die Rolle, die Sie zum Erstellen des kontenübergreifenden S3-Standorts verwenden, und die IAM-Rolle, die Sie dem S3-Standort zugewiesen haben, über die erforderlichen Berechtigungen verfügen.

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: Stellen Sie sicher, dass der S3-Zielspeicherort gemäß den Anweisungen unter Erstellen eines Speicherorts für Amazon S3 erstellt wurde.

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:1111222233334444:location/loc-0f8xxxxxxxxe4821"
}

Verwenden Sie die Optionen des AWS-CLI-Kommandos

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
  • 1111222233334444 mit der Konto-ID des Quellkontos
  • 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 Erstellen einer 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?