Como posso migrar minhas tabelas do Amazon DynamoDB de uma conta da AWS para outra?

9 minuto de leitura
0

Quero realizar uma migração de tabela do Amazon DynamoDB entre contas.

Breve descrição

Migre sua tabela do DynamoDB para uma conta diferente da AWS com um desses métodos adequados ao seu caso de uso:

  • AWS Backup
  • Importação e exportação do DynamoDB para o Amazon Simple Storage Service (Amazon S3)
  • Amazon S3 e AWS Glue
  • Amazon EMR

Resolução

AWS Backup

Você pode usar o AWS Backup para criar backups entre contas do DynamoDB. Para obter mais informações, consulte Criar cópias de backup em contas da AWS e Demonstração do AWS Backup: backup entre contas e regiões.

Na conta de destino, faça o seguinte:

  1. Crie um cofre do AWS Backup na conta de destino na região em que seu DynamoDB está presente.
  2. Ao criar o cofre, use a chave do AWS Key Management Service (AWS KMS) que você já configurou. Essa é a chave que você já compartilhou com a conta de origem na mesma organização.
  3. Depois de criar o cofre, adicione uma política do AWS Identity and Access Management (IAM) ao cofre. Você pode fazer isso selecionando a opção Permitir acesso a um cofre de backup da organização. Isso permite que outras contas dentro da mesma organização sejam copiadas para o cofre.

Na conta de origem, faça o seguinte:

  1. Na conta de origem em que seu DynamoDB está presente, crie um cofre do AWS Backup na região em que os dados da tabela precisam ser migrados.
  2. Ao criar o cofre, use a chave do AWS KMS que você já configurou. Essa é a chave que você compartilhou com outras contas na organização.
  3. Adicione uma política do IAM ao cofre que permita que outra conta na organização copie para o cofre. Você pode fazer isso selecionando a opção Você pode fazer selecionando a opção Permitir acesso a um cofre de backup da organização.
  4. Crie um plano de backup para gerar backups das tabelas do DynamoDB na conta de origem para a conta de destino.
  5. Para o cofre de backup, certifique-se de escolher o cofre que você criou na conta de origem.
  6. Em seguida, selecione a opção Copiar para o cofre de outra conta.
  7. Em Atribuir recursos, não se esqueça de incluir os recursos dos quais você precisa fazer backup. Você pode escolher Incluir tipos de recursos específicos.
  8. Em Selecionar tipos de recursos específicos, selecione DynamoDB. Você pode escolher todas as tabelas ou somente aquelas que você precisa fazer backup.

Na conta de destino, faça o seguinte:

  1. Na conta de destino, navegue até o cofre que você criou.
    Você pode ver que os Pontos de recuperação são os mesmos da conta de origem.
  2. Você pode restaurar sua tabela do DynamoDB na conta de destino.

Observação: para essa abordagem, as contas de origem e de destino devem estar na mesma organização.

Importação e exportação do DynamoDB para o Amazon S3

  1. Migre os dados da tabela do DynamoDB exportando a tabela para um bucket do Amazon S3 na conta de destino. Certifique-se de que o DynamoDB tenha permissões s3:ListBucket para esse bucket do S3. Certifique-se de que o bucket do S3 não tenha nenhuma lista de controle de acesso que negue o acesso aos dados exportados.
  2. Depois que a exportação for concluída, importe os dados do bucket do S3 para uma nova tabela na conta de destino. Para obter mais informações, consulte Importação de dados do DynamoDB do Amazon S3: como funciona.

Observação: a exportação da tabela não consome nenhuma capacidade de leitura na tabela e não tem impacto no desempenho ou na disponibilidade da tabela. Além disso, importar a tabela não consome nenhuma capacidade de gravação. Portanto, você não precisa de capacidade adicional durante o processo de importação.

Amazon S3 e AWS Glue

Você pode migrar sua tabela do DynamoDB para uma conta diferente da AWS usando um bucket do S3 e um trabalho do AWS Glue.

1.    Você pode realizar a migração inicial da tabela do DynamoDB exportando as tabelas para um bucket do Amazon S3 na outra conta.

Quando você exporta suas tabelas da Conta A para um bucket do S3 na Conta B, os objetos ainda pertencem à Conta A. Os usuários do AWS Identify Access Management (IAM) na Conta B não podem acessar os objetos por padrão. A função de exportação não grava dados com a lista de controle de acesso (ACL) bucket-owner-full-control. Como solução alternativa para esse problema de propriedade do objeto, inclua a permissão PutObjectAcl em todos os objetos exportados após a conclusão da exportação. Essa solução alternativa concede acesso a todos os objetos exportados para os proprietários do bucket na Conta B. Para obter mais informações, consulte Por que não consigo acessar um objeto que foi enviado ao meu bucket do Amazon S3 por outra conta da AWS?

2.    Use uma tarefa do Glue para ler os arquivos do bucket do S3 e gravá-los na tabela de destino do DynamoDB.

Depois de exportar os dados para um bucket do S3 na conta de destino, conforme mencionado na etapa 1, faça o seguinte na conta de destino:

Execute um rastreador do AWS Glue nos dados no Amazon S3. O rastreador infere o esquema e cria uma tabela do AWS Glue Data Catalog com essa definição de esquema.

Use o AWS Glue Studio para criar um trabalho de ETL. Depois de especificar uma origem, transformação e destino, o AWS Glue Studio gera automaticamente o código PySpark com base nessas entradas. Para esse trabalho, especifique a tabela do AWS Glue Data Catalog como a origem e ApplyMApplyMapping como a transformação. Não especifique um alvo. O AWS Glue Studio gera o código PySpark para criar um DynamicFrame a partir do S3.

Certifique-se de que o nome da chave e o mapeamento do tipo de dados do código gerado pelo AWS Glue Studio estejam corretos. Se os mapeamentos não estiverem corretos, modifique o código e corrija os mapeamentos. Como você não especificou o destino ao criar o trabalho do AWS Glue, adicione uma operação de coletor semelhante à seguinte neste exemplo. Adicionar essa operação permite que o trabalho grave diretamente na tabela do DynamoDB de destino:

glueContext.write_dynamic_frame_from_options ( frame = Mapped, connection_type = "dynamodb", connection_options = { "dynamodb.region": "", "dynamodb.output.tableName": "", "dynamodb.throughput.write.percent": "1.0" } )

Para carregar os dados na tabela de destino, execute o trabalho no AWS Glue Studio ou na página Jobs no console do AWS Glue.

3.    Depois de exportar as tabelas para o bucket do Amazon S3, use o DynamoDB Streams e o AWS Lambda para migrar inserções e atualizações de dados na tabela de origem para a tabela de destino em outra conta. Para obter mais informações, consulte Replicação entre contas com o Amazon DynamoDB.

AWS Glue

Os trabalhos de ETL do AWS Glue oferecem suporte tanto à leitura de dados quanto à gravação de dados na tabela do DynamoDB de outra conta. Use o parâmetro dynamodb.sts.roleArn para assumir uma função entre contas no script do trabalho. Assumir essa função permite que você obtenha as credenciais temporárias que devem ser usadas para acesso entre contas ao DynamoDB. Para obter mais informações, consulte Acesso entre contas entre regiões às tabelas do DynamoDB e Como exportar uma tabela do Amazon DynamoDB para o Amazon S3 usando o AWS Step Functions e o AWS Glue.

Amazon EMR

Ao usar o Amazon EMR para migrar tabelas do DynamoDB, use uma das seguintes opções, dependendo do seu caso de uso:

  • Se você puder arcar com o tempo de inatividade durante a migração, interrompa as operações de gravação na tabela de origem. Isso é para garantir que a tabela de destino esteja sincronizada com a tabela de origem.
  • Se não puder arcar com o tempo de inatividade, deverá armazenar todas as transações que acontecerem durante a migração em uma tabela temporária. Depois que a tabela original for migrada para a outra conta da AWS, envie as novas transações da tabela de teste para a tabela de destino.

Observação: o tempo necessário para migrar tabelas com o Amazon EMR pode variar significativamente. A variação depende do desempenho da rede de throughput provisionado da tabela do DynamoDB e da quantidade de dados armazenados na tabela.

Para migrar uma tabela do DynamoDB usando o Amazon EMR, faça o seguinte:

  1. Inicie clusters do EMR nas contas de origem e de destino. Na seção Configuração de software, certifique-se de escolher uma opção que inclua o Apache Hive. Observação: é uma prática de segurança recomendada lançar clusters do Amazon EMR em sub-redes privadas. As sub-redes privadas devem ter um endpoint VPC do Amazon S3 e uma rota para o DynamoDB. Para obter mais informações, consulte Sub-redes privadas. Se os clusters precisarem acessar a Internet, use um gateway NAT que resida em uma sub-rede pública. Para obter mais informações, consulte VPC com sub-redes públicas e privadas (NAT).
  2. Certifique-se de que as funções do IAM EMR_EC2_DefaultRole em ambas as contas tenham permissão para gravar no bucket do S3 na conta de destino. Para obter mais informações, consulte Configurar perfis de serviço do IAM para permissões do Amazon EMR aos serviços e recursos da AWS.
  3. Na conta de origem, conecte-se ao nó principal usando SSH.
  4. Na conta de origem, use os comandos do Hive para exportar os dados da tabela do DynamoDB para o bucket do S3 na conta de destino.
  5. Na conta de destino, importe os dados do Amazon S3 para a nova tabela do DynamoDB.
  6. Se estiver usando uma tabela de teste para capturar gravações que aconteceram durante a migração, repita as etapas 4 e 5 na tabela de teste.

Informações relacionadas

Copiar dados entre o DynamoDB e o Amazon S3

AWS OFICIAL
AWS OFICIALAtualizada há 9 meses