Come posso utilizzare AWS DataSync per trasferire i dati da o verso una posizione Amazon S3 multi-account?

6 minuti di lettura
0

Desidero utilizzare AWS DataSync per trasferire dati da o verso un bucket Amazon Simple Storage (Amazon S3) multi-account.

Breve descrizione

Per utilizzare DataSync per il trasferimento di dati tra account, effettuare le seguenti operazioni:

  1. Usa AWS Command Line Interface (AWS CLI) o AWS SDK per creare una posizione Amazon S3 su più account in DataSync.
  2. Crea un'attività DataSync che trasferisca i dati dal bucket di origine al bucket di destinazione.

Tieni presenti le seguenti limitazioni quando utilizzi DataSync per trasferire dati tra bucket di account S3 diversi:

  • DataSync non applica la lista di controllo degli accessi (ACL) con pieno controllo del proprietario del bucket quando trasferisce i dati a un bucket di destinazione multi-account. Ciò comporta problemi di proprietà degli oggetti nel bucket di destinazione.
  • Per una posizione S3 multi-account, è supportato solo un bucket multi-account nella stessa Regione. Se utilizzi una posizione S3 multi-account e multi-Regione, riceverai gli errori GetBucketLocation o Unable to connect to S3 endpoint (impossibile connettersi all'endpoint S3). Quindi, se viene creata un'attività nell'account di origine, questa deve essere creata nella stessa Regione del bucket di destinazione. Se viene creata un'attività nell'account di destinazione, questa deve essere creata nella stessa Regione del bucket di origine.
  • Non è possibile utilizzare il ruolo di passaggio tra account per accedere alla posizione S3 multi-account.

È possibile configurare l'attività DataSync nell'account di destinazione per estrarre dati dall'origine aggirando le limitazioni precedenti.

Soluzione

Eseguire i controlli richiesti

Supponiamo che l'account di origine abbia il bucket S3 di origine su più account e che l'account di destinazione abbia il bucket S3 di destinazione e l'attività DataSync. Esegui i seguenti controlli:

Utente/ruolo AWS Identity and Management (IAM): verifica se i seguenti utenti o ruoli IAM dispongono delle autorizzazioni richieste:

  • L'utente o il ruolo che stai utilizzando per creare la posizione S3 multi-account
  • Il ruolo che hai assegnato alla posizione S3

Policy del bucket di origine: assicurati che la policy del bucket di origine consenta a entrambi gli utenti/ruoli IAM nell'account di destinazione di accedere al bucket. La seguente policy di esempio concede l'accesso al bucket di origine a entrambi gli utenti/ruoli IAM:

{
  "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/*"
      ]
    }
  ]
}

Assicurati di sostituire i seguenti valori nella policy precedente:

  • example-source-bucket con il nome del bucket di origine
  • 1111222233334444 con l'ID account dell'account di destinazione
  • datasync-config-role con il ruolo IAM utilizzato per la configurazione di DataSync (ad esempio, creare una posizione S3 di origine e l'attività in DataSync)
    Nota: è possibile utilizzare anche un utente IAM. In questo articolo si considera l'uso del ruolo IAM.
  • dataysnc-transfer-role con il ruolo IAM assegnato durante la creazione della posizione S3 di origine
    Nota: DataSync utilizza questo ruolo per accedere ai dati multi-account.

Posizione S3 di destinazione:

Utilizza AWS CLI o SDK per creare una posizione S3 di origine multi-account in DataSync

Nota: la creazione di una posizione S3 su più account non è supportata nella Console di gestione AWS.

Puoi creare la posizione S3 su più account utilizzando uno dei seguenti metodi:

  • Usa un file JSON di configurazione.
  • Usa le opzioni del comando di AWS CLI.

Uso di un file JSON di configurazione

1.    Crea un file JSON di configurazione input.template per la posizione S3 su più account con i seguenti parametri:

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

2.    Crea una posizione S3 eseguendo il seguente comando di AWS CLI:

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

Nota: se ricevi un messaggio di errore durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

Per maggiori informazioni, consulta create-location-s3.

Quando viene creata la posizione S3, viene visualizzato il seguente output:

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

123456789012 è l'ID dell'account di origine.

Utilizzo delle opzioni nel comando di AWS CLI

Esegui il seguente comando di AWS CLI con le opzioni appropriate:

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

Assicurati di sostituire i seguenti valori nel comando:

  • example-source-bucket con il nome del bucket di origine
  • example-DataSync-Region con la Regione in cui verrà creata l'attività DataSync.

Creazione di un'attività DataSync

Configura l'attività DataSync e avviala dalla console DataSync. Per ulteriori informazioni, consulta Avvio dell'attività AWS DataSync.

Errori noti e soluzioni

Errore: errore durante la creazione della posizione S3 DataSync: InvalidRequestException: fornire un bucket nella regione xxx in cui DataSync è attualmente utilizzato

Se ricevi questo errore, controlla che il bucket e le policy IAM includano le seguenti autorizzazioni richieste:

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

Se si verifica questo errore durante l'utilizzo di un bucket con più account, assicurati che i bucket si trovino nella stessa regione dell'attività DataSync

Problemi di proprietà degli oggetti S3

DataSync non supporta l'utilizzo di un bucket su più account come posizione di destinazione. Pertanto, non è possibile utilizzare l’ACL bucket-owner-full-control. Se l'attività DataSync viene eseguita dall'account del bucket di origine, gli oggetti caricati nell'account del bucket di destinazione potrebbero presentare il problema di proprietà dell'oggetto. Per risolvere questo problema, se il bucket di destinazione non contiene oggetti che utilizzano ACL, valuta la possibilità di disabilitare le ACL nel bucket di destinazione. Per ulteriori informazioni, consulta Controllo della proprietà degli oggetti e disabilitazione delle ACL per il bucket. In caso contrario, è consigliabile configurare l'attività DataSync nell'account di destinazione per estrarre i dati dall'origine.


Informazioni correlate

Come utilizzare AWS DataSync per migrare i dati tra bucket Amazon S3

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa