Minha tarefa do AWS Database Migration Service (AWS DMS) foi bem-sucedida, mas não migra dados do meu endpoint de origem do Amazon Simple Storage Service (Amazon S3). Quero solucionar esse problema.
Resolução
Há vários motivos pelos quais uma tarefa do AWS DMS é bem-sucedida, mas não migra dados. Complete a resolução para seu caso de uso.
O status da tarefa é "Carregamento concluído, replicação em andamento", mas a tarefa do AWS DMS não está carregando dados no destino
Confirme se o caminho do S3 que você definiu no endpoint de origem está correto. No log de replicação, identifique as entradas que mostram que o AWS DMS não consegue encontrar os arquivos de dados no caminho do S3.
Exemplo de entrada de log de replicação:
[SOURCE_UNLOAD ]I: Unload finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows sent. (streamcomponent.c:3396)
[TARGET_LOAD ]I: Load finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows received. 0 rows skipped. Volume transferred 0. (streamcomponent.c:3667)
O Amazon S3 armazena o arquivo de dados para a fase de carregamento completo (data.csv) e o arquivo de dados para alterações em andamento (change_data.csv) no seguinte formato:
- S3-bucket/dms-folder/sub-folder/dms_schema/dms_table/data.csv
- S3-bucket/dms-folder/sub-folder/dms-cdc-path/dms-cdc-sub-path/change_data.csv
Para encontrar os arquivos de dados, o endpoint de origem do S3 usa a pasta do bucket, o caminho da captura de dados de alteração (change data capture, CDC) e os campos da estrutura da tabela.
No exemplo anterior de caminhos de arquivo, dms-folder/sub-folder é a pasta do bucket. O caminho da CDC que você insere ao criar o endpoint de origem do S3 é dms-cdc-path/dms-cdc-sub-path.
Exemplo de estrutura de tabela que usa o caminho do arquivo de exemplo:
{
"TableCount": 1,
"Tables": [
{
"TableColumns": […],
"TableColumnsTotal": "1",
"TableName": "dms_table",
"TableOwner": "dms_schema",
"TablePath": "dms_schema/dms_table/"
}
]
}
Importante: não inclua o caminho de pasta do bucket dms-folder/sub-folder no TablePath da estrutura da tabela.
Quando você especifica a Configuração do seu endpoint, a pasta do bucket é opcional. Se você especificar uma pasta do bucket, o caminho da CDC e TablePath devem estar na mesma pasta no Amazon S3. Se você não especificar a pasta do bucket, o TablePath e o caminho da CDC estarão diretamente abaixo do bucket do S3.
A pasta do bucket no endpoint de origem do S3 pode ser qualquer diretório de pasta entre o nome do bucket e o nome do esquema da estrutura da tabela. No exemplo anterior de estrutura de tabela, o diretório da pasta é dms-schema. Se você não tiver uma hierarquia de pastas no bucket, mantenha o campo em branco.
Observação: as pastas do bucket e os caminhos da CDC podem ser pastas individuais ou podem incluir subpastas, como dms-folder ou dms-folder/sub-folder.
Se sua configuração de tarefa do DMS usar um endpoint de origem do S3, você deve incluir o esquema e a tabela no mapeamento da tabela. O esquema e a tabela são necessários para migrar dados com êxito para o destino. Para obter mais informações, consulte Definindo tabelas externas para o Amazon S3 como fonte para AWS DMS.
Se você usar Abandonar tabelas no destino como o modo de preparação de tabela na tarefa, o DMS cria a tabela de destino dms_schema.dms_table.
Exemplo de comando de criação de tabela de destino:
CREATE TABLE 'dms_schema'.'dms_table' (...);
Observação: os nomes de pastas e objetos no Amazon S3 diferenciam maiúsculas de minúsculas. Use-as corretamente ao especificar os nomes de pastas e objetos no endpoint do S3.
O status da tarefa é "Carregamento concluído, replicação em andamento", mas nenhuma tabela está na seção Estatísticas da tabela
Quando você usa Abandonar tabelas no modo de destino, o AWS DMS pode não criar uma tabela no endpoint de destino. Um caminho incorreto do S3 ou um tipo de dados não compatível podem causar esse problema.
Confirme se o caminho do S3 no endpoint de origem está correto. Em seguida, verifique se o endpoint do S3 é compatível com o tipo de dados.
Verifique se o filtro definido pelo mapeamento de tabelas da tarefa do DMS está causando a falta de tabelas. Certifique-se de definir a tabela necessária no mapeamento da tabela de tarefas na estrutura da tabela do endpoint de origem do S3.
O status da tarefa é "Em execução" e a tarefa do DMS criou a tabela no endpoint de destino, mas não carregou dados
Se o AWS DMS não conseguir obter os dados do caminho do S3, use o log de replicação para encontrar os erros. Para obter logs detalhados, altere o nível de log SOURCE_CAPTURE de Padrão para Depuração detalhada.
Exemplo de log:
[SOURCE_CAPTURE ]E: No response body. Response code: 403 [1001730] (transfer_client.cpp:589)
[SOURCE_CAPTURE ]E: failed to download file </dms-folder/sub-folder/dms_schema/dms_table/data.csv> from bucket <dms-test> as </rdsdbdata/data/tasks/NKMBA237MEB4UFSRDF5ZAF3EZQ/bucketFolder/dms-folder/sub-folder/dms_schema/dms_table/data.csv>,
status = 4 (FAILED) [1001730] (transfer_client.cpp:592)
Você recebe uma mensagem de erro "No response body" no log de replicação
O erro No response body ocorre quando o perfil do AWS Identity and Access Management (AWS IAM) no endpoint de origem do S3 não tem as permissões corretas. Para resolver esse problema, confirme se o arquivo de dados existe no caminho do S3 que está na mensagem de erro. Em seguida, confirme se o usuário do IAM tem permissões para s3:GetObject.
Observação: se você ativou o versionamento no bucket de origem, também deve conceder a permissão s3:GetObjectVersion.
Informações relacionadas
Usando o Amazon S3 como fonte para AWS DMS