Solicitação de uma exportação de tabela no DynamoDB
As exportações de tabela do DynamoDB permitem exportar dados de tabela para um bucket do Amazon S3, o que possibilita que você execute análises e consultas complexas nos dados usando outros serviços da AWS, como Athena, AWS Glue, Amazon SageMaker, Amazon EMR e AWS Lake Formation. Você pode solicitar uma exportação de tabela usando o AWS Management Console, a AWS CLI ou a API do DynamoDB.
nota
Buckets do Amazon S3 pagos pelo solicitante não são aceitos.
O DynamoDB comporta exportação completa e exportação incremental:
-
Nas exportações completas, é possível exportar um snapshot completo da tabela para o bucket do Amazon S3 em qualquer momento na janela de recuperação para um ponto no tempo (PITR).
-
Nas exportações incrementais, você pode exportar para o bucket do Amazon S3 dados da tabela do DynamoDB que foram alterados, atualizados ou excluídos entre um espaço de tempo especificado, dentro da janela de PITR.
Tópicos
- Pré-requisitos
- Solicitação de uma exportação usando o AWS Management Console
- Obtenção de detalhes sobre exportações anteriores no AWS Management Console
- Solicitação de uma exportação usando o AWS CLI
- Obtenção de detalhes sobre exportações anteriores no AWS CLI
- Solicitar uma exportação usando o AWS SDK
- Obter detalhes sobre exportações anteriores no AWS SDK
Pré-requisitos
Habilitar a PITR
Para usar o recurso de exportação para o S3, você precisará habilitar a PITR na tabela. Para obter detalhes sobre como habilitar a PITR, consulte Recuperação para um ponto no tempo. Se você solicitar uma exportação para uma tabela que não tenha a PITR habilitada, a solicitação falhará com uma mensagem de exceção: “Ocorreu um erro (PointInTimeRecoveryUnavailableException) ao chamar a operação ExportTableToPointInTime
: a recuperação para um ponto no tempo não é ativada para ‘my-dynamodb-table’ da tabela”.
Configurar permissões do S3
É possível exportar os dados da tabela para qualquer bucket do Amazon S3 em que se tenha permissão para gravar. O bucket de destino não precisa estar na mesma região da AWS nem ter o mesmo proprietário que a tabela de origem. Sua política do AWS Identity and Access Management (IAM) precisa permitir que você realize ações do S3 (s3:AbortMultipartUpload
, s3:PutObject
es3:PutObjectAcl
) e a ação de exportação do DynamoDB (dynamodb:ExportTableToPointInTime
). Veja um exemplo de uma política que concederá permissões ao usuário para realizar exportações para um bucket do S3.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDynamoDBExportAction", "Effect": "Allow", "Action": "dynamodb:ExportTableToPointInTime", "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/my-table" }, { "Sid": "AllowWriteToDestinationBucket", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::your-bucket/*" } ] }
Se você precisar gravar em um bucket do S3 que esteja em outra conta ou não tiver permissões para gravar, o proprietário do bucket do S3 precisará adicionar uma política de bucket para permitir que você exporte do DynamoDB para esse bucket. Veja um exemplo de política no bucket do S3 de destino.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }
Revogar essas permissões enquanto uma exportação estiver em andamento resultará em arquivos parciais.
nota
Se a tabela ou o bucket para o qual você está exportando estiver criptografado com chaves gerenciadas pelo cliente, as políticas de chave do KMS deverão conceder ao DynamoDB permissão para usá-lo. Essa permissão é concedida por meio do usuário/perfil do IAM que aciona o trabalho de exportação. Para obter mais informações sobre criptografia, inclusive práticas recomendadas, consulte “Como o DynamoDB usa o AWS KMS” e “Usar uma chave do KMS personalizada
Solicitação de uma exportação usando o AWS Management Console
O exemplo a seguir demonstra como usar o console do DynamoDB para restaurar uma tabela existente chamada MusicCollection
.
nota
Esse procedimento supõe que você habilitou a recuperação em um ponto anterior no tempo. Para habilitá-la para a tabela MusicCollection
, na guia Overview (Visão geral) da tabela, na seção Table details (Detalhes da tabela), selecione Enable (Habilitar) para Point-in-time recovery (Recuperação em um ponto anterior no tempo).
Para solicitar uma exportação de tabela
Faça login no AWS Management Console e abra o console do DynamoDB em https://console.aws.amazon.com/dynamodb/
. -
No painel de navegação, no lado esquerdo do console, escolha Export to S3 (Exportar para o S3).
-
Selecione o botão Exportar para o S3.
-
Escolha uma tabela de origem e um bucket do S3 como destino. Se o bucket de destino pertencer à sua conta, você poderá usar o botão Browse S3 (Procurar no S3) para encontrá-lo. Caso contrário, insira o URL do bucket usando o
s3://
. Obucketname
/prefix
format.prefix
é uma pasta opcional para ajudar a manter o bucket de destino organizado. -
Escolha Exportação completa ou Exportação incremental. A Exportação completa gera o snapshot completo da tabela tal como ela estava no momento especificado. A Exportação incremental gera as alterações feitas na tabela durante o período de exportação especificado. A saída é compactada de forma que contenha apenas o estado final do item do período de exportação. O item só aparecerá uma vez na exportação, mesmo que tenha várias atualizações no mesmo período de exportação.
-
Escolha Exportar para começar.
Os dados exportados não são consistentes do ponto de vista transacional. As operações de transação podem ser divididas entre duas saídas de exportação. Um subconjunto de itens pode ser modificado por uma operação de transação refletido na exportação, enquanto outro subconjunto de modificações na mesma transação não é refletido na mesma solicitação de exportação. No entanto, as exportações acabam sendo consistentes. Se uma transação for interrompida durante uma exportação, você terá a transação restante na próxima exportação contígua, sem duplicações. Os períodos usados para exportações são baseados em um relógio interno do sistema e podem variar em um minuto em relação ao relógio local da aplicação.
Obtenção de detalhes sobre exportações anteriores no AWS Management Console
É possível encontrar informações sobre tarefas de exportação realizadas no passado selecionando a seção Exportações para o S3 na barra de navegação lateral. Essa seção contém uma lista de todas as exportações que você criou nos últimos 90 dias. Selecione o ARN de uma tarefa listada na guia Exportações para recuperar informações sobre essa exportação, incluindo quaisquer configurações avançadas escolhidas. Observe que, embora os metadados da tarefa de exportação expirem após 90 dias e os trabalhos mais antigos não sejam mais encontrados nesta lista, os objetos no bucket do S3 permanecerão disponíveis enquanto suas políticas de bucket permitirem. O DynamoDB jamais exclui os objetos que ele cria no bucket do S3 durante uma exportação.
Solicitação de uma exportação usando o AWS CLI
O exemplo a seguir mostra como usar a AWS CLI para exportar uma tabela chamada MusicCollection
para um bucket do S3 chamado ddb-export-musiccollection
.
nota
Esse procedimento supõe que você habilitou a recuperação em um ponto anterior no tempo. Para habilitar esse recurso para a tabela MusicCollection
, execute o seguinte comando.
aws dynamodb update-continuous-backups \ --table-name MusicCollection \ --point-in-time-recovery-specification PointInTimeRecoveryEnabled=True
nota
Se você optar por criptografar a exportação usando uma chave protegida pelo AWS Key Management Service (AWS KMS), a chave deverá estar na mesma região que o bucket do S3 de destino.
Obtenção de detalhes sobre exportações anteriores no AWS CLI
Você pode encontrar informações sobre solicitações de exportação que executou no passado usando o comando list-exports
. Esse comando retorna uma lista de todas as exportações que você criou nos últimos 90 dias. Observe que, embora os metadados da tarefa de exportação expirem após 90 dias e os trabalhos mais antigos não sejam mais retornados pelo list-exports
comando, os objetos em seu bucket do S3 permanecerão disponíveis enquanto suas políticas de bucket permitirem. O DynamoDB jamais exclui os objetos que ele cria no bucket do S3 durante uma exportação.
As exportações permanecem no status PENDING
até serem concluídas com sucesso ou falha. Se forem bem-sucedidas, o status mudará para COMPLETED
. Se falharem, o status mudará para FAILED
com uma failure_message
e um failure_reason
.
No exemplo a seguir, usamos o parâmetro opcional table-arn
para listar apenas as exportações de uma tabela específica.
aws dynamodb list-exports \ --table-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog
Para recuperar informações detalhadas sobre uma tarefa de exportação específica, incluindo quaisquer configurações avançadas, use o comando describe-export
.
aws dynamodb describe-export \ --export-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4
Solicitar uma exportação usando o AWS SDK
Use esses trechos de código para solicitar uma exportação de tabela usando o AWS SDK de sua escolha.
Obter detalhes sobre exportações anteriores no AWS SDK
Use esses trechos de código para obter detalhes sobre exportações de tabela anteriores usando o AWS SDK de sua escolha.