Supporto per l’esportazione di dati dello snapshot del database in Amazon S3 per Amazon RDS
È possibile esportare i dati dello snapshot DB in un bucket Simple Storage Service (Amazon S3). Il processo di esportazione viene eseguito in background e non ha ripercussioni sulle prestazioni del database attivo.
Quando si esporta uno snapshot di database, Amazon RDS estrae i dati dallo snapshot e li archivia in un bucket Amazon S3. I dati vengono archiviati in un formato Apache Parquet compresso e coerente.
È possibile esportare tutti i tipi di snapshot DB, inclusi snapshot manuali, snapshot automatici di sistema e snapshot creati dal servizio AWS Backup. Per impostazione predefinita, vengono esportati tutti i dati nello snapshot. Tuttavia, è possibile scegliere di esportare set specifici di database, schemi o tabelle.
Dopo l'esportazione dei dati, è possibile analizzare i dati esportati direttamente mediante strumenti quali Amazon Athena o Amazon Redshift Spectrum. Per ulteriori informazioni sull'utilizzo Athena per leggere i dati Parquet, consultaParquet SerDe in Guida per l'utente di Amazon Athena. Per ulteriori informazioni sull'utilizzo Redshift Spectrum per leggere i dati Parquet, consulta COPY da formati di dati a colonna nella Guida per gli sviluppatori di database di Amazon Redshift.
avvertimento
Non è possibile ripristinare i dati degli snapshot esportati da S3 in una nuova istanza database o importare i dati degli snapshot da S3 in un’istanza database esistente. Tuttavia, è possibile elaborare i dati utilizzando Amazon Athena o Redshift Spectrum per l’analisi. Inoltre, è possibile utilizzare AWS Glue per trasformare i dati e poi importarli in Amazon RDS utilizzando strumenti come AWS DMS o script personalizzati.
Per ulteriori informazioni sull’esportazione degli snapshot del database in Amazon S3, consulta gli argomenti riportati di seguito.
Argomenti
Annullamento di un’attività di esportazione di snapshot per Amazon RDS
Messaggi di errore per le attività di esportazione di Amazon S3 per Amazon RDS
Risoluzione degli errori di autorizzazione RDS per PostgreSQL
Convenzioni di denominazione dei file per le esportazioni in Amazon S3 per Amazon RDS
Conversione dei dati durante l’esportazione in un bucket Amazon S3 per Amazon RDS
Panoramica sull'esportazione dei dati degli snapshot
Per esportare i dati dello snapshot DB in un bucket Simple Storage Service (Amazon S3) puoi utilizzare il processo riportato di seguito. Per ulteriori dettagli, consulta le seguenti sezioni:
-
Identificare lo snapshot da esportare.
Utilizzare uno snapshot automatico o manuale esistente oppure creare uno snapshot manuale di un’istanza database o un cluster di database Multi-AZ.
-
Configurare l'accesso al bucket Simple Storage Service (Amazon S3).
Un bucket è un container per oggetti o file Simple Storage Service (Amazon S3). Per fornire le informazioni per accedere a un bucket, attenersi alla seguente procedura:
-
Identificare il bucket S3 in cui deve essere esportato lo snapshot. Il bucket S3 deve trovarsi nella stessa regione AWS dello snapshot. Per ulteriori informazioni, consulta Identificazione del bucket Simple Storage Service (Amazon S3) in cui esportare.
-
Creare un ruolo AWS Identity and Access Management (IAM) che conceda all'attività di esportazione dello snapshot l'accesso al bucket S3. Per ulteriori informazioni, consulta Fornire l'accesso a un bucket Simple Storage Service (Amazon S3) utilizzando un ruolo IAM.
-
-
Crea una AWS KMS key di crittografia simmetrica per la crittografia lato server. La chiave KMS viene utilizzata dall'attività di esportazione dello snapshot per impostare la crittografia lato server AWS KMS durante la scrittura dei dati di esportazione in S3.
La policy della chiave KMS deve includere entrambe le autorizzazioni
kms:CreateGrantekms:DescribeKey. Per ulteriori informazioni sull'uso delle chiavi KMS in Amazon RDS, consulta Gestione di AWS KMS key.Inoltre, se nella policy della chiave KMS è presente un'istruzione di negazione, assicurati di escludere esplicitamente il principale del servizio AWS
export.rds.amazonaws.com.È possibile utilizzare una chiave KMS all'interno dell'account AWS oppure puoi usare una chiave KMS cross-account. Per ulteriori informazioni, consulta Utilizzo di un AWS KMS key multiaccount per crittografare le esportazioni Amazon S3.
-
Esportare lo snapshot in Simple Storage Service (Amazon S3) utilizzando la console o il comando CLI
start-export-task. Per ulteriori informazioni, consulta Esportazione di uno snapshot DB in un bucket Amazon S3. -
Per accedere ai dati esportati nel bucket Simple Storage Service (Amazon S3), consulta Caricamento, download e gestione di oggetti nella Guida per l'utente di Amazon Simple Storage Service.
Configurazione dell'accesso a un bucket Simple Storage Service (Amazon S3)
Per esportare i dati dello snapshot DB in un file Simple Storage Service (Amazon S3), è innanzitutto necessario concedere allo snapshot l'autorizzazione per accedere al bucket Simple Storage Service (Amazon S3). È quindi possibile creare un ruolo IAM per consentire al servizio Amazon RDS di scrivere nel bucket Amazon S3.
Argomenti
Identificazione del bucket Simple Storage Service (Amazon S3) in cui esportare
Fornire l'accesso a un bucket Simple Storage Service (Amazon S3) utilizzando un ruolo IAM
Utilizzo di un bucket Simple Storage Service (Amazon S3) multiaccount
Utilizzo di un AWS KMS key multiaccount per crittografare le esportazioni Amazon S3
Identificazione del bucket Simple Storage Service (Amazon S3) in cui esportare
Identificare il bucket Simple Storage Service (Amazon S3) in cui esportare lo snapshot DB. Utilizzare un bucket S3 esistente o crearne uno nuovo.
Nota
Il bucket S3 in cui esportare deve trovarsi nella stessa regione AWS dello snapshot.
Per ulteriori informazioni sull'utilizzo dei bucket Simple Storage Service (Amazon S3), vedere quanto segue in Guida per l'utente di Amazon Simple Storage Service:
Fornire l'accesso a un bucket Simple Storage Service (Amazon S3) utilizzando un ruolo IAM
Prima di esportare i dati dello snapshot DB in Simple Storage Service (Amazon S3), fornire l'autorizzazione di accesso in scrittura alle attività di esportazione dello snapshot al bucket Simple Storage Service (Amazon S3).
Per concedere l'autorizzazione, crea una policy IAM che fornisca accesso al bucket, crea un ruolo IAM e collega la policy al ruolo. Successivamente assegnare il ruolo IAM all'attività di esportazione dello snapshot.
Per informazioni su altri strumenti di gestione degli accessi Amazon S3, consulta Controllo degli accessi in Amazon S3 nella Guida per l’utente di Amazon S3.
Importante
Se si prevede di utilizzare AWS Management Console per esportare lo snapshot, è possibile scegliere di creare automaticamente la policy IAM e il ruolo quando si esporta lo snapshot. Per istruzioni, consulta Esportazione di uno snapshot DB in un bucket Amazon S3.
Per fornire alle attività dello snapshot DB l'accesso a Amazon S3
-
Creare una policy IAM Questa policy fornisce le autorizzazioni al bucket e all'oggetto che consentono all'attività di esportazione snapshot l'accesso a Amazon S3.
Includi nella policy le seguenti operazioni necessarie per consentire il trasferimento dei file da Amazon RDS a un bucket S3:
-
s3:PutObject* -
s3:GetObject* -
s3:ListBucket -
s3:DeleteObject* -
s3:GetBucketLocation
Includi nella policy le seguenti risorse per identificare il bucket S3 e gli oggetti nel bucket. Il seguente elenco di risorse mostra il formato Amazon Resource Name (ARN) per l'accesso a Amazon S3.
-
arn:aws:s3:::amzn-s3-demo-bucket -
arn:aws:s3:::amzn-s3-demo-bucket/*
Per ulteriori informazioni sulla creazione di una policy IAM per Amazon RDS, consultare Creazione e utilizzo di una policy IAM per l'accesso al database IAM. Consulta anche il Tutorial: Creare e collegare la prima policy gestita dal cliente nella Guida per l'utente di IAM.
Il seguente comando dell'AWS CLI crea una policy IAM denominata
ExportPolicycon queste opzioni. Concede l’accesso a un bucket denominatoamzn-s3-demo-bucket.Nota
Dopo aver creato la policy, prendere nota del relativo ARN. Per la fase successiva, in cui si associa la policy a un ruolo IAM, è necessario l'ARN.
aws iam create-policy --policy-name ExportPolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExportPolicy", "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }' -
-
Crea un ruolo IAM in modo che Amazon RDS possa assumere questo ruolo IAM per tuo conto per accedere ai bucket Amazon S3. Per ulteriori informazioni, consulta la pagina relativa alla creazione di un ruolo per delegare le autorizzazioni a un utente IAM nella Guida per l'utente IAM.
L'esempio seguente mostra come utilizzare il comando dell'AWS CLI per creare un ruolo denominato
rds-s3-export-role.aws iam create-role --role-name rds-s3-export-role --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }' -
Collegare la policy IAM al ruolo IAM creato.
Il seguente comando della AWS CLI collega la policy creata in precedenza al ruolo denominato
rds-s3-export-role. Sostituirecon l'ARN della policy annotato nella fase precedente.your-policy-arnaws iam attach-role-policy --policy-arnyour-policy-arn--role-name rds-s3-export-role
Utilizzo di un bucket Simple Storage Service (Amazon S3) multiaccount
È possibile utilizzare bucket Simple Storage Service (Amazon S3) su account AWS. Per utilizzare un bucket tra account, aggiungi un criterio bucket per consentire l'accesso al ruolo IAM utilizzato per le esportazioni S3. Per informazioni, consulta Esempio 2: il proprietario del bucket concede autorizzazioni per il bucket multiaccount.
Allega una policy di bucket al bucket, come mostrato nell'esempio riportato di seguito.
Utilizzo di un AWS KMS key multiaccount per crittografare le esportazioni Amazon S3
È possibile utilizzare un multiaccount AWS KMS key per crittografare le esportazioni di Amazon S3. Innanzitutto, aggiungi una policy chiave all'account locale, quindi aggiungi le policy IAM nell'account esterno. Per ulteriori informazioni, consulta Autorizzazione per gli utenti in altri account a utilizzare una chiave KMS.
Per utilizzare una chiave KMS multiaccount
-
Aggiungi una policy di chiave all'account locale.
Il seguente esempio fornisce
ExampleRoleeExampleUsernell'account esterno 444455556666 autorizzazioni nell'account locale 123456789012.{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "*" } -
Aggiungere le policy IAM nell'account esterno
La policy IAM dell'esempio seguente consente al principale di utilizzare la chiave KMS nell'account 123456789012 per le operazioni di crittografia. Per concedere questa autorizzazione a
ExampleRoleeExampleUsernell'account 444455556666, collega la policy ad essi nell'account.{ "Sid": "Allow use of KMS key in account 123456789012", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }
Esportazione di uno snapshot DB in un bucket Amazon S3
È possibile avere fino a cinque attività di esportazione di snapshot di database simultanee in esecuzione per ogni Account AWS.
Nota
L'esportazione di snapshot RDS può richiedere qualche minuto a seconda del tipo e delle dimensioni del database. L'attività di esportazione ripristina e ridimensiona innanzitutto l'intero database prima di estrarre i dati su Simple Storage Service (Amazon S3). Lo stato di avanzamento dell'attività durante questa fase viene visualizzato come Avvio. Quando l'attività passa all'esportazione dei dati in S3, lo stato di avanzamento diventa In progress (In corso).
Il tempo necessario per completare l'esportazione dipende dai dati memorizzati nel database. Ad esempio, le tabelle con chiave primaria numerica o colonne indice ben distribuite esporteranno più velocemente. Le tabelle che non contengono una colonna adatta al partizionamento e le tabelle con un solo indice su una colonna basata su stringhe richiedono più tempo. Questo tempo di esportazione più lungo si verifica perché l'esportazione utilizza un processo a thread singolo più lento.
È possibile esportare uno snapshot DB in Simple Storage Service (Amazon S3) utilizzando la AWS Management Console, AWS CLI o l'API RDS. Per esportare uno snapshot del database in un bucket Amazon S3 multi-account, si utilizza AWS CLI o l’API RDS.
Se si utilizza una funzione Lambda per esportare uno snapshot, aggiungere l'operazione kms:DescribeKey alla policy della funzione Lambda. Per ulteriori informazioni, consulta Autorizzazioni di AWS Lambda.
L'opzione Export to Amazon S3 (Esporta in Simple Storage Service (Amazon S3)) viene visualizzata solo per gli snapshot che possono essere esportati in Simple Storage Service (Amazon S3). Uno snapshot potrebbe non essere disponibile per l'esportazione a causa dei seguenti motivi:
-
Il motore del database non è supportato per l'esportazione S3.
-
La versione del motore di database non è supportata per l’esportazione S3.
-
L'esportazione S3 non è supportata nella regione AWS in cui è stato creato lo snapshot.
Per esportare uno snapshot DB
-
Accedi alla AWS Management Console e apri la console Amazon RDS all'indirizzo https://console.aws.amazon.com/rds/
. -
Nel pannello di navigazione, selezionare Snapshots (Snapshot).
-
Dalle schede, scegliere il tipo di snapshot che si desidera esportare.
-
Nell'elenco degli snapshot, scegliere lo snapshot che si desidera esportare.
-
Per Actions (Operazioni), scegli Export to Amazon S3 (Esporta in Simple Storage Service (Amazon S3).
Viene visualizzata la finestra Export to Amazon S3 (Esporta in Simple Storage Service (Amazon S3)).
-
Per Export identifier (Identificatore di esportazione), immettere un nome per identificare l'attività di esportazione. Questo valore viene utilizzato anche per il nome del file creato nel bucket S3.
-
Scegli i dati da esportare:
-
Scegliere All (Tutti) per esportare tutti i dati nello snapshot.
-
Scegliere Partial (Parziali) per esportare parti specifiche dello snapshot. Per identificare le parti dello snapshot da esportare, immettere uno o più database, schemi o tabelle per Identifiers (Identificatori), separati da spazi.
Utilizza il seguente formato:
database[.schema][.table]database2[.schema2][.table2] ...databasen[.scheman][.tablen]Ad esempio:
mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
-
-
Per S3 bucket (Bucket S3), scegliere il bucket in cui esportare.
Per assegnare i dati esportati a un percorso di cartella nel bucket S3, immettere il percorso opzionale per S3 prefix (Prefisso S3).
-
Per il ruolo IAM, scegliere un ruolo che conceda l'accesso in scrittura al bucket S3 scelto o creare un nuovo ruolo.
-
Se è stato creato un ruolo seguendo le fasi in Fornire l'accesso a un bucket Simple Storage Service (Amazon S3) utilizzando un ruolo IAM, scegliere tale ruolo.
-
Se non è stato creato un ruolo che fornisce l'accesso in scrittura al bucket S3 scelto, scegli Create a new role (Crea un nuovo ruolo) per creare automaticamente il ruolo. Immettere quindi un nome per il ruolo nel nome del ruolo IAM.
-
-
Per AWS KMS key, immettere l'ARN per la chiave da utilizzare per crittografare i dati esportati.
-
Scegliere Export to Amazon S3 (Esporta in Simple Storage Service (Amazon S3)).
Per esportare uno snapshot DB in Simple Storage Service (Amazon S3) tramite AWS CLI, utilizzare il comando start-export-task con le seguenti opzioni richieste:
-
--export-task-identifier -
--source-arn -
--s3-bucket-name -
--iam-role-arn -
--kms-key-id
Negli esempi seguenti, l’attività di esportazione snapshot è denominata my_snapshot_export ed esporta uno snapshot in un bucket S3 denominato amzn-s3-demo-bucket.
Per Linux, macOS o Unix:
aws rds start-export-task \ --export-task-identifiermy-snapshot-export\ --source-arn arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name\ --s3-bucket-nameamzn-s3-demo-bucket\ --iam-role-arniam-role\ --kms-key-idmy-key
Per Windows:
aws rds start-export-task ^ --export-task-identifiermy-snapshot-export^ --source-arn arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name^ --s3-bucket-nameamzn-s3-demo-bucket^ --iam-role-arniam-role^ --kms-key-idmy-key
Di seguito è riportato un output di esempio.
{ "Status": "STARTING", "IamRoleArn": "iam-role", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "my-export-bucket", "PercentProgress": 0, "KmsKeyId": "my-key", "ExportTaskIdentifier": "my-snapshot-export", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name" }
Per fornire un percorso di cartella nel bucket S3 per l'esportazione dello snapshot, includere l'opzione --s3-prefix nel comando start-export-task.
Per esportare uno snapshot DB Amazon S3 utilizzando l'API Amazon RDS, utilizzare l'operazione StartExportTask con i seguenti parametri richiesti:
-
ExportTaskIdentifier -
SourceArn -
S3BucketName -
IamRoleArn -
KmsKeyId
Disponibilità di regioni e versioni
Il supporto varia a seconda delle versioni specifiche di ciascun motore di database e a seconda delle Regioni AWS. Per ulteriori informazioni sulla disponibilità di versioni e regioni in caso di esportazione di snapshot in S3, consulta Regioni e motori di database Aurora supportati per l’esportazione di snapshot in S3 in Amazon RDS.
Limitazioni
L'esportazione dei dati snapshot DB in Simple Storage Service (Amazon S3) presenta le seguenti limitazioni:
-
Non è possibile eseguire contemporaneamente più attività di esportazione per lo stesso snapshot database. Ciò è valido sia per le esportazioni totali sia per le esportazioni parziali.
-
L’esportazione di snapshot da database che utilizzano l’archiviazione magnetica non è supportata.
-
Le esportazioni in S3 non supportano i prefissi S3 contenenti i due punti (:).
-
I seguenti caratteri nel percorso del file S3 vengono convertiti in caratteri di sottolineatura (_) durante l'esportazione:
\ ` " (space) -
Se un database, uno schema o una tabella contiene caratteri diversi da quelli riportati di seguito, l'esportazione parziale non è supportata. Tuttavia, è possibile esportare l'intero snapshot DB.
-
Lettere latine (A–Z)
-
Numeri (0–9)
-
Simbolo del dollaro ($)
-
Carattere di sottolineatura (_)
-
-
Gli spazi ( ) e alcuni caratteri non sono supportati nei nomi delle colonne delle tabelle del database. Le tabelle con i seguenti caratteri nei nomi delle colonne vengono ignorate durante l'esportazione:
, ; { } ( ) \n \t = (space) -
Le tabelle con barre (/) nei rispettivi nomi vengono ignorate durante l'esportazione.
-
Le tabelle temporanee e non registrate di RDS per PostgreSQL vengono ignorate durante l'esportazione.
-
Se i dati contengono un oggetto di grandi dimensioni, ad esempio un BLOB o un CLOB, vicino o superiore a 500 MB, l'esportazione non riesce.
-
Se una tabella contiene una riga di grandi dimensioni, vicine o superiori a 2 GB, la tabella viene ignorata durante l'esportazione.
-
Per le esportazioni parziali, l’elenco
ExportOnlyha una dimensione massima di 200 KB. -
Si consiglia vivamente di utilizzare un nome univoco per ogni attività di esportazione. Se non utilizzi un nome di attività univoco, potresti ricevere il seguente messaggio di errore:
ExportTaskAlreadyExistsFault: si è verificato un errore (ExportTaskAlreadyExists) durante la chiamata all'operazione StartExportTask: l'attività di esportazione con IDxxxxxesiste già. -
È possibile eliminare uno snapshot durante l'esportazione dei suoi dati in S3, ma vengono comunque addebitati i costi di storage per tale snapshot fino al completamento dell'attività di esportazione.
-
Non è possibile ripristinare i dati degli snapshot esportati da S3 in una nuova istanza database o importare i dati degli snapshot da S3 in un’istanza database esistente.
-
È possibile avere fino a cinque attività di esportazione di snapshot di database simultanee in esecuzione per ogni Account AWS.
-
Per esportare uno snapshot del database in un bucket Amazon S3 multi-account, è necessario utilizzare AWS CLI o l’API RDS.
-
Dopo che Amazon RDS ha completato un’attività di esportazione, potrebbe essere necessario attendere qualche istante prima di iniziare un’altra attività di esportazione dallo stesso snapshot del database.
-
Non è possibile esportare viste o viste materializzate.
-
L’esportazione RDS in S3 non supporta il controllo degli accessi basato su tag per GuardDuty Malware Protection for S3.