Come utilizzare AWS DataSync per trasferire i dati da o verso una posizione Amazon S3 con più account?

Ultimo aggiornamento: 2022-04-26

Desidero utilizzare AWS DataSync per trasferire dati da o verso un bucket Amazon S3 (Amazon Simple Storage) con più 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 presente le seguenti limitazioni quando utilizzi DataSync per trasferire dati tra bucket di proprietà di account S3 diversi:

  • DataSync non applica la lista di controllo degli accessi bucket-owner-full-control durante il trasferimento dei dati in un bucket di destinazione tra account, causando problemi di proprietà degli oggetti nel bucket di destinazione.
  • Per una posizione S3 con più account, è supportato solo un bucket su più account nella stessa regione. Se utilizzi una posizione S3 con più account e su più regioni, riceverai gli errori GetBucketLocation o Impossibile connettersi all'endpoint S3.
  • Non è possibile utilizzare il ruolo di passaggio tra account per accedere alla posizione S3 con più 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 controlli seguenti:

Utente/ruolo IAM (AWS Identity and Management): Verifica se l'utente/ruolo IAM che stai utilizzando per creare la posizione S3 con più account e il ruolo IAM assegnato alla posizione S3 dispongono delle autorizzazioni richieste.

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 su più account.

Posizione S3 di destinazione: assicurati che la posizione S3 di destinazione sia stata creata in base alle istruzioni riportate in Creazione di una posizione per Amazon S3.

Usa AWS CLI o SDK per creare una posizione S3 di origine su più 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:1111222233334444:location/loc-0f8xxxxxxxxe4821"
}

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
  • 1111222233334444 con l'ID account dell'account 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 Creazione di un’attività.

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.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?