As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Você pode migrar dados para o Amazon S3 AWS DMS usando qualquer uma das fontes de banco de dados suportadas. Ao usar o Amazon S3 como destino em uma AWS DMS tarefa, os dados de carga total e de captura de dados alterados (CDC) são gravados no formato de valores separados por vírgula (.csv) por padrão. Para obter mais opções de armazenamento compacto e de consultas mais rápidas, você também tem a opção de ter os dados gravados no formato do Apache Parquet (.parquet).
AWS DMS nomeia arquivos criados durante um carregamento completo usando um contador hexadecimal incremental — por exemplo, LOAD00001.csv, LOAD00002..., LOAD00009, LOAD0000A e assim por diante para arquivos.csv. AWS DMS nomeia arquivos CDC usando carimbos de data/hora, por exemplo, 20141029-1134010000.csv. Para cada tabela de origem que contém registros, AWS DMS cria uma pasta na pasta de destino especificada (se a tabela de origem não estiver vazia). AWS DMS grava todos os arquivos CDC e de carga completa no bucket do Amazon S3 especificado. Você pode controlar o tamanho dos arquivos AWS DMS criados usando a configuração do MaxFileSizeendpoint.
O parâmetro bucketFolder
contém o local em que arquivos .csv ou .parquet são armazenados antes de serem carregados no bucket do S3. Com arquivos .csv, os dados de tabela são armazenados no seguinte formato no bucket do S3, mostrado com arquivos da carga máxima.
database_schema_name
/table_name
/LOAD00000001.csvdatabase_schema_name
/table_name
/LOAD00000002.csv ...database_schema_name
/table_name
/LOAD00000009.csvdatabase_schema_name
/table_name
/LOAD0000000A.csvdatabase_schema_name
/table_name
/LOAD0000000B.csv ...database_schema_name
/table_name
/LOAD0000000F.csvdatabase_schema_name
/table_name
/LOAD00000010.csv ...
É possível especificar o delimitador de coluna, o delimitador de linha e outros parâmetros utilizando os atributos de conexão adicionais. Para obter mais informações sobre os atributos de conexão extra, consulte Configurações de endpoint ao usar o Amazon S3 como destino para AWS DMS, no final desta seção.
É possível especificar o proprietário do bucket e evitar o corte utilizando a configuração ExpectedBucketOwner
do endpoint do Amazon S3, conforme mostrado a seguir. Ao fazer uma solicitação para testar uma conexão ou executar uma migração, o S3 verifica o ID da conta do proprietário do bucket em relação ao parâmetro especificado.
--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'
Quando você usa AWS DMS para replicar alterações de dados usando uma tarefa CDC, a primeira coluna do arquivo de saída.csv ou .parquet indica como os dados da linha foram alterados, conforme mostrado no seguinte arquivo.csv.
I,101,Smith,Bob,4-Jun-14,New York U,101,Smith,Bob,8-Oct-15,Los Angeles U,101,Smith,Bob,13-Mar-17,Dallas D,101,Smith,Bob,13-Mar-17,Dallas
Neste exemplo, suponha que haja uma EMPLOYEE
tabela no banco de dados de origem. AWS DMS grava dados no arquivo.csv ou .parquet, em resposta aos seguintes eventos:
-
Um novo funcionário (Bob Smith, ID de funcionário 101) é contratado em 4 de junho de 2014 no escritório de Nova York. No arquivo .csv ou .parquet, o
I
na primeira coluna indica que uma nova linha foiINSERT
(inserida) na tabela EMPLOYEE no banco de dados de origem. -
Em 8 de outubro de 2015, Bob é transferido para o escritório de Los Angeles. No arquivo .csv ou .parquet, o
U
indica que a linha correspondente na tabela EMPLOYEE foiUPDATE
(atualizada) para refletir o local do novo escritório de Bob. O restante da linha reflete a linha na tabela EMPLOYEE conforme ela aparece apósUPDATE
. -
Em 13 de março de 2017, Bob é transferido novamente para o escritório de Dallas. No arquivo .csv ou .parquet, o
U
indica que essa linha foiUPDATE
(atualizada) novamente. O restante da linha reflete a linha na tabela EMPLOYEE conforme ela aparece apósUPDATE
. -
Depois de um tempo trabalhando em Dallas, Bob deixa a empresa. No arquivo .csv ou .parquet, o
D
indica que a linha foiDELETE
(excluída) da tabela de origem. O restante da linha reflete como a linha na tabela EMPLOYEE aparecia antes de ser excluída.
Observe que, por padrão, para o CDC, AWS DMS armazena as alterações de linha para cada tabela do banco de dados, independentemente da ordem de transação. Para armazenar as alterações de linha nos arquivos de CDC de acordo com a ordem da transação, utilize as configurações do endpoint do S3 para especificar isso e o caminho da pasta em que deseja que os arquivos de transações da CDC sejam armazenados no destino do S3. Para obter mais informações, consulte Captura de dados de alteração (CDC), incluindo a ordem de transações no destino do S3..
Para controlar a frequência de gravações em um destino do Amazon S3 durante uma tarefa de replicação de dados, é possível configurar os atributos de conexão adicionais cdcMaxBatchInterval
e cdcMinFileSize
. Isso pode resultar em melhor desempenho ao analisar os dados sem operações adicionais de sobrecarga. Para ter mais informações, consulte Configurações de endpoint ao usar o Amazon S3 como destino para AWS DMS
Tópicos
- Pré-requisitos da utilização do Amazon S3 como destino
- Limitações da utilização do Amazon S3 como destino
- Segurança
- Utilizar o Apache Parquet para armazenar objetos do Amazon S3
- Marcação de objetos do Amazon S3
- Criação de AWS KMS chaves para criptografar objetos de destino do Amazon S3
- Utilizar o particionamento de pastas com base em data
- Carga paralela de fontes particionadas ao usar o Amazon S3 como destino para AWS DMS
- Configurações de endpoint ao usar o Amazon S3 como destino para AWS DMS
- Usando AWS Glue Data Catalog com um destino do Amazon S3 para AWS DMS
- Utilizar criptografia de dados, arquivos de parquet e de CDC no destino do Amazon S3
- Indicar operações de banco de dados de origem em dados migrados do S3
- Tipos de dados de destino do S3 Parquet
Pré-requisitos da utilização do Amazon S3 como destino
Antes de utilizar o Amazon S3 como destino, verifique se o seguinte é verdadeiro:
-
O bucket do S3 que você está usando como destino está na mesma AWS região da instância de replicação do DMS que você está usando para migrar seus dados.
-
A AWS conta que você usa para a migração tem uma função do IAM com acesso de gravação e exclusão ao bucket do S3 que você está usando como destino.
-
Esse perfil tem acesso à marcação para que você possa marcar todos os objetos do S3 gravados no bucket de destino.
-
O perfil do IAM tem o DMS (dms.amazonaws.com) adicionado como Entidade confiável.
Para a AWS DMS versão 3.4.7 e superior, o DMS deve acessar o bucket de origem por meio de um VPC endpoint ou de uma rota pública. Para ter informações sobre os endpoints da VPC, consulte Configurar endpoints da VPC como endpoints de origem e de destino do AWS.
Para configurar esse acesso à conta, verifique se o perfil atribuído à conta de usuário utilizada para criar a tarefa de migração tem o seguinte conjunto de permissões.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:DeleteObject",
"s3:PutObjectTagging"
],
"Resource": [
"arn:aws:s3:::buckettest2/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::buckettest2"
]
}
]
}
Para obter os pré-requisitos para utilizar a validação com o S3 como destino, consulte Pré-requisitos da validação do S3 de destino.
Limitações da utilização do Amazon S3 como destino
Aplicam-se as seguintes limitações ao utilizar o Amazon S3 como destino:
-
Não ative o versionamento para o S3. Se o versionamento do S3 for necessário, utilize políticas de ciclo de vida para excluir ativamente as versões antigas. Caso contrário, é possível encontrar falhas na conexão de teste de endpoint devido ao tempo limite de uma chamada
list-object
do S3. Para criar uma política de ciclo de vida para um bucket do S3, consulte Gerenciar o ciclo de vida do armazenamento. Para excluir a versão de um objeto do S3, consulte Excluir versões de objetos de um bucket com versionamento ativado. -
Um bucket do S3 ativado para VPC (VPC do gateway) é compatível com as versões 3.4.7 e superiores.
-
Os seguintes comandos da linguagem de definição de dados (DDL) são compatíveis com a captura de dados de alteração (CDC): truncar tabela, descartar tabela, criar tabela, renomear tabela, adicionar coluna, descartar coluna, renomear coluna e alterar o tipo de dados de coluna. Observe que quando uma coluna é adicionada, descartada ou renomeada no banco de dados de origem, nenhuma instrução ALTER é registrada no bucket do S3 de destino e AWS DMS não altera os registros criados anteriormente para corresponder à nova estrutura. Após a alteração, AWS DMS cria todos os novos registros usando a nova estrutura da tabela.
nota
Uma operação de truncamento da DDL remove todos os arquivos e pastas de tabelas correspondentes em um bucket do S3. É possível utilizar as configurações de tarefas para desativar esse comportamento e configurar a forma como o DMS trata o comportamento da DDL durante a captura de dados de alteração (CDC). Para obter mais informações, consulte Configurações de tarefas para tratamento do DDL processamento de alterações.
-
O modo Full LOB não é compatível.
-
As alterações na estrutura da tabela de origem durante a carga máxima não são compatíveis. As alterações nos dados são compatíveis durante a carga máxima.
-
Várias tarefas que replicam dados da mesma tabela de origem para o mesmo bucket de endpoint do S3 de destino resultam em tarefas sendo gravadas no mesmo arquivo. Recomendamos que você especifique diferentes endpoints de destino (buckets) se sua fonte de dados estiver na mesma tabela.
-
BatchApply
não é compatível com um endpoint do S3. A utilização da aplicação em lote (por exemplo, a configuração da tarefa de metadados de destinoBatchApplyEnabled
) para um destino do S3 pode resultar em perda de dados. -
Não é possível utilizar
DatePartitionEnabled
ouaddColumnName
em conjunto comPreserveTransactions
ouCdcPath
. -
AWS DMS não suporta renomear várias tabelas de origem para a mesma pasta de destino usando regras de transformação.
-
Se houver gravação intensa na tabela de origem durante a fase de carregamento completo, o DMS poderá gravar registros duplicados no bucket do S3 ou nas alterações armazenadas em cache.
-
Se você configurar a tarefa com um
TargetTablePrepMode
definido comoDO_NOTHING
, o DMS poderá gravar registros duplicados no bucket do S3 se a tarefa for interrompida e retomada abruptamente durante a fase de carregamento completo. -
Se você configurar o endpoint de destino com a configuração
PreserveTransactions
definida comotrue
, o recarregamento de uma tabela não limpará os arquivos de CDC gerados anteriormente. Para obter mais informações, consulte Captura de dados de alteração (CDC), incluindo a ordem de transações no destino do S3..
Para obter as limitações da utilização da validação com o S3 como destino, consulte Limitações da utilização da validação de destino do S3..
Segurança
Para utilizar o Amazon S3 como destino, a conta utilizada para a migração deve ter acesso de gravação e exclusão ao bucket do Amazon S3 utilizado como o destino. Especifique o nome do recurso da Amazon (ARN) de um perfil do IAM que tem as permissões necessárias para acessar o Amazon S3.
AWS DMS oferece suporte a um conjunto de concessões predefinidas para o Amazon S3, conhecidas como listas de controle de acesso predefinidas (). ACLs Cada ACL pré-configurada tem um conjunto de concessões e permissões que podem ser utilizadas para definir permissões para o bucket do Amazon S3. É possível especificar uma ACL pré-configurada utilizando cannedAclForObjects
no atributo da string de conexão para o endpoint de destino do S3. Para obter mais informações sobre como utilizar o atributo de conexão adicional cannedAclForObjects
, consulte Configurações de endpoint ao usar o Amazon S3 como destino para AWS DMS. Para obter mais informações sobre o Amazon S3 enlatado ACLs, consulte ACL enlatado.
O perfil do IAM que você utiliza para a migração deve ser capaz de executar a operação da API s3:PutObjectAcl
.
Utilizar o Apache Parquet para armazenar objetos do Amazon S3
O formato de valores separados por vírgulas (.csv) é o formato do armazenamento padrão para objetos de destino do Amazon S3. Para obter armazenamento compacto e consultas mais rápidas, é possível utilizar o Apache Parquet (.parquet) como o formato de armazenamento.
O Apache Parquet é um formato de armazenamento de arquivos de código aberto originalmente projetado para o Hadoop. Para obter mais informações sobre o Apache Parquet, consulte https://parquet.apache.org/
Para definir o .parquet como o formato de armazenamento para os objetos de destino do S3, é possível utilizar os seguintes mecanismos:
-
Configurações de endpoint que você fornece como parâmetros de um objeto JSON ao criar o endpoint utilizando a AWS CLI ou a API do AWS DMS. Para obter mais informações, consulte Utilizar criptografia de dados, arquivos de parquet e de CDC no destino do Amazon S3.
-
Atributos de conexão adicionais que você fornece como uma lista separada por ponto-e-vírgula ao criar o endpoint. Para obter mais informações, consulte Configurações de endpoint ao usar o Amazon S3 como destino para AWS DMS.
Marcação de objetos do Amazon S3
É possível marcar objetos do Amazon S3 criados por uma instância de replicação especificando objetos JSON adequados como parte das regras de mapeamento de tarefa-tabela. Para obter mais informações sobre os requisitos e as opções de marcação de objetos do S3, incluindo nomes de tag válidos, consulte Marcação de objetos no Guia do usuário do Amazon Simple Storage Service. Para obter mais informações sobre o mapeamento de tabelas utilizando JSON, consulte Especificando regras de seleção e transformações de tabelas usando JSON.
Você marca objetos do S3 criados para tabelas e esquemas especificados utilizando um ou mais objetos JSON do tipo de regra selection
. Então, você segue esse objeto (ou objetos) selection
por um ou mais objetos JSON do tipo de regra post-processing
com a ação add-tag
. Essas regras de pós-processamento identificam os objetos do S3 que você deseja marcar e especificar os nomes e valores das tags que você deseja adicionar a esses objetos do S3.
É possível encontrar os parâmetros para especificar em objetos JSON do tipo de regra post-processing
na tabela a seguir.
Parameter | Possíveis valores | Descrição |
---|---|---|
rule-type |
post-processing |
Um valor que aplica ações de pós-processamento aos objetos de destino gerados. É possível especificar uma ou mais regras de pós-processamento para marcar objetos do S3 selecionados. |
rule-id |
Um valor numérico. | Um valor numérico exclusivo para identificar a regra. |
rule-name |
Um valor alfanumérico. | Um nome exclusivo para identificar a regra. |
rule-action |
add-tag |
A ação de pós-processamento que você deseja aplicar ao objeto do S3. É possível adicionar uma ou mais tags utilizando um único objeto fr pós-processamento do JSON para a ação add-tag . |
object-locator |
|
O nome de cada esquema e tabela aos quais a regra se aplica. É possível utilizar o sinal de porcentagem "%" como um curinga para todo ou parte do valor de cada parâmetro
|
tag-set |
|
Os nomes e os valores de uma ou mais tags que você deseja definir em cada objeto do S3 criado, que corresponde ao Também é possível especificar um valor dinâmico para todo ou parte do valor para os parâmetros notaImportanteSe você inserir um valor dinâmico para o parâmetro |
Ao especificar vários tipos de regra post-processing
para marcar uma seleção de objetos do S3, cada objeto do S3 é marcado utilizando apenas um objeto tag-set
de uma regra de pós-processamento. O conjunto de tags específico utilizado para marcar um determinado objeto do S3 é aquele da regra de pós-processamento cujo localizador de objeto associado corresponde melhor ao objeto do S3.
Por exemplo, suponha que duas regras de pós-processamento identificam o mesmo objeto do S3. Suponha também que o localizador de objetos de uma regra use curingas, e que o localizador de objetos de outra regra use uma correspondência exata para identificar o objeto do S3 (sem curingas). Nesse caso, o conjunto de tags associado à regra pós-processamento com a correspondência exata é utilizado para marcar o objeto do S3. Se várias regras de pós-processamento corresponderem a um determinado objeto do S3 igualmente bem, o conjunto de tags associado à primeira regra de pós-processamento será utilizado para marcar o objeto.
exemplo Adicionar tags estáticas a um objeto do S3 criado para uma única tabela e esquema
As seguintes regras de seleção e pós-processamento adicionam três tags (tag_1
, tag_2
e tag_3
com valores estáticos correspondentes, value_1
, value_2
e value_3
) a um objeto do S3 criado. Esse objeto do S3 corresponde a uma única tabela na origem chamada STOCK
com um esquema chamado aat2
.
{
"rules": [
{
"rule-type": "selection",
"rule-id": "5",
"rule-name": "5",
"object-locator": {
"schema-name": "aat2",
"table-name": "STOCK"
},
"rule-action": "include"
},
{
"rule-type": "post-processing",
"rule-id": "41",
"rule-name": "41",
"rule-action": "add-tag",
"object-locator": {
"schema-name": "aat2",
"table-name": "STOCK"
},
"tag-set": [
{
"key": "tag_1",
"value": "value_1"
},
{
"key": "tag_2",
"value": "value_2"
},
{
"key": "tag_3",
"value": "value_3"
}
]
}
]
}
exemplo Adicionar tags estáticas e dinâmicas a objetos do S3 criados para várias tabelas e esquemas
O exemplo a seguir tem uma seleção e duas regras de pós-processamento, em que a entrada da origem inclui todas as tabelas e todos os seus esquemas.
{
"rules": [
{
"rule-type": "selection",
"rule-id": "1",
"rule-name": "1",
"object-locator": {
"schema-name": "%",
"table-name": "%"
},
"rule-action": "include"
},
{
"rule-type": "post-processing",
"rule-id": "21",
"rule-name": "21",
"rule-action": "add-tag",
"object-locator": {
"schema-name": "%",
"table-name": "%",
},
"tag-set": [
{
"key": "dw-schema-name",
"value":"${schema-name}"
},
{
"key": "dw-schema-table",
"value": "my_prefix_${table-name}"
}
]
},
{
"rule-type": "post-processing",
"rule-id": "41",
"rule-name": "41",
"rule-action": "add-tag",
"object-locator": {
"schema-name": "aat",
"table-name": "ITEM",
},
"tag-set": [
{
"key": "tag_1",
"value": "value_1"
},
{
"key": "tag_2",
"value": "value_2"
} ]
}
]
}
A primeira regra de pós-processamento adiciona duas tags (dw-schema-name
e dw-schema-table
) com valores dinâmicos correspondentes (${schema-name}
e my_prefix_${table-name}
) a quase todos os objetos do S3 criados no destino. A exceção é o objeto do S3 identificado e marcado com a segunda regra de pós-processamento. Assim, cada objeto de destino do S3 identificado pelo localizador de objetos curinga é criado com tags que identificam o esquema e a tabela à qual ele corresponde na origem.
A segunda regra de pós-processamento adiciona tag_1
e tag_2
com valores estáticos correspondentes value_1
e value_2
a um objeto do S3 criado, que é identificado por um localizador de objetos de correspondência exata. Esse objeto do S3 criado, portanto, corresponde à uma única tabela na origem chamada ITEM
com um esquema chamado aat
. Devido à correspondência exata, essas tags substituem todas as tags nesse objeto adicionado na primeira regra de pós-processamento, que corresponde a objetos do S3 apenas por meio de curinga.
exemplo Adicionar nomes e valores de tags dinâmicas a objetos do S3
O exemplo a seguir tem duas regras de seleção e uma regra de pós-processamento. Aqui, a entrada da origem inclui apenas a tabela ITEM
no esquema retail
ou wholesale
.
{
"rules": [
{
"rule-type": "selection",
"rule-id": "1",
"rule-name": "1",
"object-locator": {
"schema-name": "retail",
"table-name": "ITEM"
},
"rule-action": "include"
},
{
"rule-type": "selection",
"rule-id": "1",
"rule-name": "1",
"object-locator": {
"schema-name": "wholesale",
"table-name": "ITEM"
},
"rule-action": "include"
},
{
"rule-type": "post-processing",
"rule-id": "21",
"rule-name": "21",
"rule-action": "add-tag",
"object-locator": {
"schema-name": "%",
"table-name": "ITEM",
},
"tag-set": [
{
"key": "dw-schema-name",
"value":"${schema-name}"
},
{
"key": "dw-schema-table",
"value": "my_prefix_ITEM"
},
{
"key": "${schema-name}_ITEM_tag_1",
"value": "value_1"
},
{
"key": "${schema-name}_ITEM_tag_2",
"value": "value_2"
}
]
]
}
O conjunto de tags da regra de pós-processamento adiciona duas tags (dw-schema-name
e dw-schema-table
) para todos os objetos do S3 criados para a tabela ITEM
no destino. A primeira tag tem o valor dinâmico "${schema-name}"
, e a segunda tag tem um valor estático, "my_prefix_ITEM"
. Assim, cada objeto de destino do S3 é criado com tags que identificam o esquema e a tabela à qual ele corresponde na origem.
Além disso, o conjunto de tags adiciona duas tags adicionais com nomes dinâmicos (${schema-name}_ITEM_tag_1
e "${schema-name}_ITEM_tag_2"
). Essas têm valores estáticos correspondentes value_1
e value_2
. Portanto, cada uma dessas tags são nomeadas pelo esquema atual, retail
ou wholesale
. Não é possível criar um nome de tag dinâmico duplicado nesse objeto, porque cada objeto é criado para um único nome de esquema exclusivo. O nome do esquema é utilizado para criar um nome de tag exclusivo de outra forma.
Criação de AWS KMS chaves para criptografar objetos de destino do Amazon S3
Você pode criar e usar AWS KMS chaves personalizadas para criptografar seus objetos de destino do Amazon S3. Depois de criar uma chave do KMS, é possível utilizá-la para criptografar objetos utilizando uma das seguintes abordagens ao criar o endpoint de destino do S3:
-
Utilize as seguintes opções para objetos de destino do S3 (com o formato de armazenamento de arquivo .csv padrão) ao executar o comando
create-endpoint
utilizando a AWS CLI.--s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder
", "BucketName": "your-bucket-name
", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-KMS-key-ARN
"}'Aqui,
é o nome de recurso da Amazon (ARN) de sua chave do KMS. Para obter mais informações, consulte Utilizar criptografia de dados, arquivos de parquet e de CDC no destino do Amazon S3.your-KMS-key-ARN
-
Defina o atributo de conexão adicional
encryptionMode
como o valorSSE_KMS
, e o atributo de conexão adicionalserverSideEncryptionKmsKeyId
como o ARN de sua chave do KMS. Para obter mais informações, consulte Configurações de endpoint ao usar o Amazon S3 como destino para AWS DMS.
Para criptografar os objetos de destino do Amazon S3 utilizando uma chave do KMS, você precisa de um perfil do IAM que tenha permissões para acessar o bucket do Amazon S3. Esse perfil do IAM é acessado em uma política (uma política de chaves) anexada à chave de criptografia criada. É possível fazer isso no console do IAM criando o seguinte:
-
Uma política com permissões para acessar o bucket do Amazon S3.
-
Um perfil do IAM com essa política.
-
A chave de criptografia do KMS com uma política de chaves que faz referência a esse perfil.
Os procedimentos a seguir descrevem como fazer isso.
Para criar uma política do IAM com permissões para acessar o bucket do Amazon S3.
Abra o console do IAM em https://console.aws.amazon.com/iam/
. -
No painel de navegação, escolha Policies (Políticas). A página Policies (Políticas) é aberta.
-
Escolha Criar política. A página Create policy (Criar política) é aberta.
-
Escolha Service (Serviço) e escolha S3. Uma lista de permissões de ação é exibida.
-
Escolha Expand all (Expandir tudo) para expandir a lista e escolha as seguintes permissões no mínimo:
-
ListBucket
-
PutObject
-
DeleteObject
Escolha todas as outras permissões necessárias e escolha Collapse all (Recolher tudo) para recolher a lista.
-
-
Escolha Resouces (Recursos) para especificar os recursos que você deseja acessar. No mínimo, escolha Todos os recursos para fornecer acesso geral aos recursos do Amazon S3.
-
Adicione todas as outras condições ou permissões necessárias e escolha Review policy (Revisar política). Verifique os resultados na página Review policy (Revisar política).
-
Se as configurações forem o que você precisa, insira um nome para a política (por exemplo,
DMS-S3-endpoint-access
), e qualquer descrição adicional e escolha Criar política. A página Policies (Políticas) é aberta com uma mensagem indicando que sua política foi criada. -
Pesquise e escolha o nome da política na lista Policies (Políticas). A página Summary (Resumo) é aberta exibindo o JSON da política, semelhante ao seguinte.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": "*" } ] }
Agora, você criou a política para acessar os recursos do Amazon S3 para a criptografia com um nome específico, por exemplo DMS-S3-endpoint-access
.
Como criar um perfil do IAM com essa política
-
No console do IAM, escolha Perfis no painel de navegação. A página de detalhes de Perfis é aberta.
-
Selecione Criar perfil. A página Create role (Criar função) é aberta.
-
Com o AWS serviço selecionado como a entidade confiável, escolha DMS como o serviço para usar a função do IAM.
-
Escolha Próximo: Permissões. A visualização Attach permissions policies (Anexar políticas de permissões) é exibida na página Create role (Criar função).
-
Encontre e selecione a política do IAM para o perfil do IAM criado no procedimento anterior (
DMS-S3-endpoint-access
). -
Escolha Próximo: tags. A visualização Add tags (Adicionar tags) é exibida na página Create role (Criar função). Aqui, você pode adicionar todas as tags desejadas.
-
Escolha Próximo: revisar. A visualização Review (Revisão) é exibida na página Create role (Criar função). Aqui, é possível verificar os resultados.
-
Se as configurações forem o que você precisa, insira um nome para o perfil (obrigatório, por exemplo,
DMS-S3-endpoint-access-role
), e qualquer descrição adicional e escolha Criar função. A página de detalhes Funções é aberta com uma mensagem indicando que o perfil foi criado.
Agora, você criou o perfil para acessar os recursos do Amazon S3 para criptografia com um nome especificado, por exemplo, DMS-S3-endpoint-access-role
.
Como criar uma chave de criptografia do KMS com uma política de chave que faz referência ao perfil do IAM
nota
Para obter mais informações sobre como AWS DMS funciona com chaves de AWS KMS criptografia, consulteConfigurando uma chave de criptografia e especificando permissões AWS KMS.
-
Faça login no console AWS Management Console e abra o AWS Key Management Service (AWS KMS) em https://console.aws.amazon.com/kms
. -
Para alterar o Região da AWS, use o seletor de região no canto superior direito da página.
-
No painel de navegação, escolha Chaves gerenciadas pelo cliente.
-
Escolha Criar chave. A página Configure key (Configurar chave) é aberta.
-
Para Key type (Tipo de chave), escolha Symmetric (Simétrica).
nota
Ao criar essa chave, você só pode criar uma chave simétrica, porque todos os AWS serviços, como o Amazon S3, só funcionam com chaves de criptografia simétricas.
-
Escolha Opções avançadas. Para Key material origin (Origem do material da chave), certifique-se de que o KMS está escolhido e escolha Next (Próximo). A página Add labels (Adicionar rótulos) é aberta.
-
Em Create alias and description (Criar alias e descrição), insira um alias para a chave (por exemplo,
DMS-S3-endpoint-encryption-key
) e qualquer descrição adicional. -
Em Tags, adicione todas as tags desejadas para ajudar a identificar a chave e controlar seu uso e escolha Next (Próximo). A página Define key administrative permissions (Definir permissões administrativas de chaves) é aberta mostrando uma lista de usuários e funções que podem ser escolhidos.
-
Adicione os usuários e as funções desejados para gerenciar a chave. Certifique-se de que esses usuários e funções tenham as permissões necessárias para gerenciar a chave.
-
Em Key deletion (Exclusão de chaves), escolha se os administradores de chaves podem excluir a chave e escolha Next (Próximo). A página Define key usage permissions (Definir permissões de uso de chaves) é aberta mostrando uma lista adicional de usuários e funções que podem ser escolhidos.
-
Para Esta conta, escolha os usuários disponíveis que você deseja que executem operações criptográficas em destinos do Amazon S3. Escolha também o perfil criado anteriormente em Perfis para ativar o acesso à criptografia dos objetos de destino do Amazon S3, por exemplo,
DMS-S3-endpoint-access-role
). -
Se você quiser adicionar outras contas não listadas para ter esse mesmo acesso, em Outras AWS contas, escolha Adicionar outra AWS conta e escolha Avançar. A página Review and edit key policy (Rever e editar política de chave) é aberta mostrando o JSON da política de chave que você pode revisar e editar digitando no JSON existente. Aqui, a política de chave que faz referência à função e aos usuários é mostrada (por exemplo,
Admin
eUser1
) que você escolheu na etapa anterior. Também é possível ver as diferentes ações de chaves permitidas para as várias entidades principais (usuários e perfis), conforme mostrado no exemplo a seguir.{ "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]
-
Escolha Terminar. A página Chaves de criptografia é aberta com uma mensagem indicando que a chave do KMS foi criada.
Agora, você criou uma nova chave do KMS com um alias especificado (por exemplo, DMS-S3-endpoint-encryption-key
). Essa chave permite AWS DMS criptografar objetos de destino do Amazon S3.
Utilizar o particionamento de pastas com base em data
AWS DMS suporta partições de pastas do S3 com base na data de confirmação da transação quando você usa o Amazon S3 como seu endpoint de destino. Utilizando o particionamento de pastas com base em data, é possível gravar dados de uma única tabela de origem em uma estrutura de pastas com hierarquia temporal em um bucket do S3. Ao particionar pastas ao criar um endpoint de destino do S3, é possível fazer o seguinte:
-
Gerenciar melhor os objetos do S3
-
Limitar o tamanho de cada pasta do S3
-
Otimizar consultas de data lake ou outras operações subsequentes
É possível ativar o particionamento de pastas com base em data ao criar um endpoint de destino do S3. É possível ativá-lo ao migrar dados existentes e ao replicar alterações em andamento (carga máxima + CDC) ou replicar somente alterações de dados (somente CDC). Utilize as seguintes configurações de endpoint de destino:
-
DatePartitionEnabled
: especifica o particionamento com base em datas. Defina esta opção Boolean comotrue
para particionar pastas de bucket do S3 com base nas datas de confirmação da transação.Não é possível utilizar essa configuração com
PreserveTransactions
ouCdcPath
.O valor padrão é
false
. -
DatePartitionSequence
: identifica a sequência do formato de data a ser utilizado durante o particionamento de pastas. Defina esta opção ENUM comoYYYYMMDD
,YYYYMMDDHH
,YYYYMM
,MMYYYYDD
ouDDMMYYYY
. O valor padrão éYYYYMMDD
. Utilize essa configuração quandoDatePartitionEnabled
estiver definido comotrue.
. -
DatePartitionDelimiter
: especifica um delimitador de separação de datas a ser utilizado durante o particionamento de pastas. Defina esta opção ENUM comoSLASH
,DASH
,UNDERSCORE
ouNONE
. O valor padrão éSLASH
. Utilize essa configuração quandoDatePartitionEnabled
estiver definido comotrue
.
O exemplo a seguir mostra como ativar o particionamento de pastas com base em data, com valores padrão para a sequência e o delimitador da partição de dados. Ele usa a --s3-settings '{
opção do AWS CLI. json-settings
}'create-endpoint
comando.
--s3-settings '{"DatePartitionEnabled": true,"DatePartitionSequence": "YYYYMMDD","DatePartitionDelimiter": "SLASH"}'
Carga paralela de fontes particionadas ao usar o Amazon S3 como destino para AWS DMS
É possível configurar uma carga máxima paralela de fontes de dados particionadas para destinos do Amazon S3. Essa abordagem melhora os tempos de carga da migração de dados particionados nos mecanismos de banco de dados de origem compatíveis para o destino do S3. Para melhorar os tempos de carga dos dados de origem particionados, crie subpastas de destino do S3 mapeadas para as partições de cada tabela no banco de dados de origem. Essas subpastas vinculadas à partição permitem AWS DMS executar processos paralelos para preencher cada subpasta no destino.
Para configurar uma carga máxima paralela de um destino do S3, o S3 é compatível com os três tipos de regra parallel-load
para a regra table-settings
de mapeamento de tabela:
partitions-auto
partitions-list
ranges
Para obter mais informações sobre esses tipos de regra de carga paralela, consulte Regras e operações de configurações de tabelas e coleções.
Para os tipos de regra partitions-auto
e partitions-list
, o AWS DMS utiliza o nome de cada partição do endpoint de origem para identificar a estrutura da subpasta de destino, da seguinte forma.
bucket_name
/bucket_folder
/database_schema_name
/table_name
/partition_name
/LOADseq_num
.csv
Aqui, o caminho da subpasta em que os dados são migrados e armazenados no destino do S3 inclui uma subpasta
adicional que corresponde a uma partição de origem com o mesmo nome. Essa subpasta partition_name
armazena um ou mais arquivos partition_name
LOAD
contendo os dados migrados da partição de origem especificada. Aqui, seq_num
.csv
é o sufixo do número de sequência no nome do arquivo .csv, como seq_num
00000001
no arquivo .csv com o nome LOAD00000001.csv
.
No entanto, alguns mecanismos de banco de dados, como MongoDB e o DocumentDB, não têm o conceito de partições. Para esses mecanismos de banco de dados, AWS DMS adiciona o índice do segmento de origem em execução como um prefixo ao nome do arquivo.csv de destino, da seguinte maneira.
.../
database_schema_name
/table_name
/SEGMENT1_LOAD00000001.csv .../database_schema_name
/table_name
/SEGMENT1_LOAD00000002.csv ... .../database_schema_name
/table_name
/SEGMENT2_LOAD00000009.csv .../database_schema_name
/table_name
/SEGMENT3_LOAD0000000A.csv
Aqui, os arquivos SEGMENT1_LOAD00000001.csv
e SEGMENT1_LOAD00000002.csv
são nomeados com o mesmo prefixo de índice do segmento de origem em execução, SEGMENT1
. Eles são nomeados assim porque os dados de origem migrados para esses dois arquivos .csv estão associados ao mesmo índice de segmento de origem em execução. Por outro lado, os dados migrados armazenados em cada um dos arquivos SEGMENT2_LOAD00000009.csv
e SEGMENT3_LOAD0000000A.csv
de destino estão associados a diferentes índices de segmentos de origem em execução. Cada arquivo tem seu nome prefixado com o nome de seu índice de segmento em execução, SEGMENT2
e SEGMENT3
.
Para o tipo de carga paralela ranges
, defina os nomes e valores das colunas utilizando as configurações columns
e boundaries
das regras table-settings
. Com essas regras, é possível especificar partições correspondentes aos nomes dos segmentos, da seguinte maneira.
"parallel-load": {
"type": "ranges",
"columns": [
"region",
"sale"
],
"boundaries": [
[
"NORTH",
"1000"
],
[
"WEST",
"3000"
]
],
"segment-names": [
"custom_segment1",
"custom_segment2",
"custom_segment3"
]
}
Aqui, a configuração de segment-names
define nomes de três partições para migrar dados em paralelo no destino do S3. Os dados migrados são carregados paralelamente e armazenados em arquivos .csv nas subpastas da partição em ordem, da seguinte maneira.
.../
database_schema_name
/table_name
/custom_segment1/LOAD[00000001...].csv .../database_schema_name
/table_name
/custom_segment2/LOAD[00000001...].csv .../database_schema_name
/table_name
/custom_segment3/LOAD[00000001...].csv
Aqui, AWS DMS armazena uma série de arquivos.csv em cada uma das três subpastas de partição. A série de arquivos .csv em cada subpasta de partição é nomeada de forma incremental, começando com LOAD00000001.csv
até que todos os dados sejam migrados.
Em alguns casos, é possível não nomear explicitamente as subpastas de partição para um tipo de carga paralela ranges
utilizando a configuração segment-names
. Nesse caso, AWS DMS aplica o padrão de criação de cada série de arquivos.csv em sua
subpasta. Aqui, o AWS DMS prefixa os nomes dos arquivos de cada série de arquivos .csv com o nome do índice do segmento de origem em execução, da seguinte forma.table_name
.../
database_schema_name
/table_name
/SEGMENT1_LOAD[00000001...].csv .../database_schema_name
/table_name
/SEGMENT2_LOAD[00000001...].csv .../database_schema_name
/table_name
/SEGMENT3_LOAD[00000001...].csv ... .../database_schema_name
/table_name
/SEGMENTZ
_LOAD[00000001...].csv
Configurações de endpoint ao usar o Amazon S3 como destino para AWS DMS
É possível utilizar as configurações de endpoint para configurar o banco de dados de destino do Amazon S3 de forma semelhante à utilização de atributos de conexão adicional. Você especifica as configurações ao criar o endpoint de destino usando o AWS DMS console ou usando o create-endpoint
comando no AWS CLI, com a sintaxe --s3-settings '{"
JSON.EndpointSetting"
:
"value"
, ...
}'
A tabela a seguir mostra as configurações de endpoint que é possível utilizar com o Amazon S3 como destino.
Opção | Descrição |
---|---|
CsvNullValue |
Um parâmetro opcional que especifica como AWS DMS trata valores nulos. Ao tratar o valor nulo, é possível utilizar esse parâmetro para passar uma string definida pelo usuário como nula ao gravar no destino. Por exemplo, quando as colunas de destino forem anuláveis, é possível utilizar essa opção para diferenciar entre o valor de string vazia e o valor nulo. Portanto, se você definir esse valor de parâmetro como a string vazia (” "ou “), AWS DMS tratará a string vazia como o valor nulo em vez de Valor padrão: Valores válidos: qualquer string válida. Example: |
AddColumnName |
Um parâmetro opcional que, quando definido como Não é possível utilizar esse parâmetro com Valor padrão: Valores válidos: Example: |
AddTrailingPaddingCharacter |
Utilize a configuração Tipo: booliano Example: |
BucketFolder |
Um parâmetro opcional para definir um nome de pasta no bucket do S3. Se fornecidos, os objetos de destino serão criados como arquivos .csv ou .parquet no caminho Example: |
BucketName |
O nome do bucket do S3 no qual os objetos de destino do S3 são criados como arquivos .csv ou .parquet. Example: |
CannedAclForObjects |
Um valor que AWS DMS permite especificar uma lista de controle de acesso predefinida (padrão) para objetos criados no bucket do S3 como arquivos.csv ou .parquet. Para obter mais informações sobre o Amazon S3 canned ACLs, consulte Canned ACL no Amazon S3 Developer Guide. Valor padrão: NONE Os valores válidos para esse atributo são: NONE; PRIVATE; PUBLIC_READ; PUBLIC_READ_WRITE; AUTHENTICATED_READ; _READ; BUCKET_OWNER_READ; BUCKET_OWNER_FULL_CONTROL. AWS_EXEC Example: |
CdcInsertsOnly |
Um parâmetro opcional durante um carga de captura de dados de alteração (CDC) para gravar apenas operações INSERT nos arquivos de saída de valores separados por vírgulas (.csv) ou de armazenamento colunar (.parquet). Por padrão (a configuração Somente no caso do formato .csv, a maneira como esses INSERTS são registrados depende do valor Valor padrão: Valores válidos: Example: |
CdcInsertsAndUpdates |
Habilita uma carga de captura de dados de alteração (CDC) para gravar operações INSERT e UPDATE em arquivos de saída .csv ou .parquet (armazenamento colunar). A configuração padrão é Somente para o formato de arquivo.csv, a forma como esses INSERTs e UPDATEs são gravados depende do valor do Para obter mais informações sobre como esses parâmetros funcionam juntos, consulte Indicar operações de banco de dados de origem em dados migrados do S3. nota
Valor padrão: Valores válidos: Example: |
|
Especifica o caminho da pasta dos arquivos CDC. Para uma origem do S3, essa configuração é necessária se uma tarefa captura os dados de alterações; caso contrário, ela é opcional. Se Não é possível utilizar esse parâmetro com Tipo: string Por exemplo, se você especificar Se você especificar o mesmo notaEssa configuração é suportada nas AWS DMS versões 3.4.2 e superiores. Ao capturar alterações de dados na ordem da transação, o DMS sempre armazena as alterações de linha em arquivos.csv, independentemente do valor da configuração do DataFormat S3 no destino. O DMS não salva as alterações de dados na ordem da transação utilizando arquivos .parquet. |
|
Condição de tamanho máximo do intervalo, definido em segundos, para a saída de um arquivo para o Amazon S3. Valor padrão: 60 segundos Quando notaA partir da AWS DMS versão 3.5.3, ao usar o PostgreSQL ou o Aurora PostgreSQL como origem e o Amazon S3 com o Parquet como destino, a frequência das atualizações depende da quantidade de dados que o endpoint de destino está configurado para reter |
|
Condição de tamanho mínimo do arquivo, definido em kilobytes, para a saída de um arquivo para o Amazon S3. Valor padrão: 32000 KB Quando |
|
Se definido como Não é possível utilizar esse parâmetro com Tipo: booliano Ao capturar alterações de dados na ordem da transação, o DMS sempre armazena as alterações de linha em arquivos.csv, independentemente do valor da configuração do DataFormat S3 no destino. O DMS não salva as alterações de dados na ordem da transação utilizando arquivos .parquet. notaEssa configuração é suportada nas AWS DMS versões 3.4.2 e superiores. |
IncludeOpForFullLoad |
Um parâmetro opcional durante um carga máxima para gravar operações INSERT só nos arquivos de saída de valores separados por vírgulas (.csv). Em cargas máximas, os registros só podem ser inseridos. Por padrão (a configuração notaEsse parâmetro funciona em conjunto com Valor padrão: Valores válidos: Example: |
CompressionType |
Um parâmetro opcional ao definir como Valor padrão: Valores válidos: Example: |
CsvDelimiter |
O delimitador utilizado para separar colunas nos arquivos .csv de origem. O padrão é uma vírgula (,). Example: |
CsvRowDelimiter |
O delimitador utilizado para separar linhas nos arquivos .csv de origem. O padrão é uma nova linha (\n). Example: |
|
Um valor que especifica o tamanho máximo (em KB) de qualquer arquivo .csv a ser criado ao migrar para um destino do S3 durante a carga máxima. Valor padrão: 1.048.576 KB (1 GB) Valores válidos: 1 a 1.048.576 Example: |
Rfc4180 |
Um parâmetro opcional utilizado para definir o comportamento com o propósito de determinar a conformidade com RFC para os dados migrados para o Amazon S3 utilizando somente o formato de arquivo .csv. Quando esse valor é definido como Valor padrão: Valores válidos: Example: |
EncryptionMode |
O modo de criptografia do lado do servidor que você deseja utilizar para criptografar os arquivos de objetos .csv ou .parquet copiados no S3. Os valores válidos são notaTambém é possível utilizar o comando Valor padrão: Valores válidos: Example: |
ServerSideEncryptionKmsKeyId |
Se você definir Example: |
DataFormat |
O formato de saída dos arquivos AWS DMS usados para criar objetos do S3. Para destinos do Amazon S3, AWS DMS oferece suporte a arquivos.csv ou .parquet. Os arquivos .parquet têm um formato de armazenamento colunar binário com opções de compactação eficientes e desempenho de consulta mais rápido. Para obter mais informações sobre os arquivos .parquet, consulte https://parquet.apache.org/ Valor padrão: Valores válidos: Example: |
EncodingType |
O tipo de codificação Parquet. As opções do tipo de compactação incluem as seguintes:
Valor padrão: Valores válidos: Example: |
DictPageSizeLimit |
O tamanho máximo permitido, em bytes, para uma página de dicionário em um arquivo .parquet. Se uma página de dicionário exceder esse valor, a página usará a codificação simples. Valor padrão: 1.024.000 (1 MB) Valores válidos: qualquer valor inteiro válido Example: |
RowGroupLength |
O número de linhas em um grupo de linhas de um arquivo .parquet. Valor padrão: 10.024 (10 KB) Valores válidos: qualquer número inteiro válido Example: |
DataPageSize |
O tamanho máximo permitido, em bytes, para uma página de dados em um arquivo .parquet. Valor padrão: 1.024.000 (1 MB) Valores válidos: qualquer número inteiro válido Example: |
ParquetVersion |
A versão do formato do arquivo .parquet. Valor padrão: Valores válidos: Example: |
EnableStatistics |
Defina como Valor padrão: Valores válidos: Example: |
TimestampColumnName |
Um parâmetro opcional para incluir uma coluna de timestamp nos dados de endpoint de destino do S3. AWS DMS inclui uma Em uma carga completa, cada linha da coluna de timestamp contém um timestamp para quando os dados foram transferidos da origem para o destino pelo DMS. Em um carregamento de CDC, cada linha da coluna de timestamp contém o timestamp da confirmação da linha no banco de dados de origem. O formato de string para esse valor de coluna de timestamp é Quando o parâmetro Example: |
UseTaskStartTimeForFullLoadTimestamp |
Quando definido como Quando Valor padrão: Valores válidos: Example:
|
ParquetTimestampInMillisecond |
Um parâmetro opcional que especifica a precisão de qualquer valor de coluna Quando esse atributo é definido como Atualmente, Amazon Athena e AWS Glue pode lidar com precisão de apenas milissegundos para nota
Valor padrão: Valores válidos: Example: |
GlueCatalogGeneration |
Para gerar um AWS Glue Data Catalog, defina essa configuração de endpoint como. Valor padrão: Valores válidos: Example: Observação: não utilize |
Usando AWS Glue Data Catalog com um destino do Amazon S3 para AWS DMS
AWS Glue é um serviço que fornece maneiras simples de categorizar dados e consiste em um repositório de metadados conhecido como. AWS Glue Data Catalog Você pode se integrar AWS Glue Data Catalog ao seu endpoint de destino do Amazon S3 e consultar dados do Amazon S3 por meio de outros serviços, AWS como o Amazon Athena. O Amazon Redshift funciona com AWS DMS isso AWS Glue , mas não oferece suporte a isso como uma opção pré-criada.
Para gerar o catálogo de dados, defina a configuração do GlueCatalogGeneration
endpoint comotrue
, conforme mostrado no AWS CLI exemplo a seguir.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint
--engine-name s3 --endpoint-type target--s3-settings '{"ServiceAccessRoleArn":
"your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName":
"your-bucket-name", "DataFormat": "parquet", "GlueCatalogGeneration": true}'
Para uma tarefa de replicação de carga máxima que inclua o tipo de dados csv
, defina IncludeOpForFullLoad
como true
.
Não utilize GlueCatalogGeneration
com PreserveTransactions
e CdcPath
. O AWS Glue rastreador não consegue reconciliar os diferentes esquemas de arquivos armazenados sob o especificado. CdcPath
Para que o Amazon Athena indexe os dados do Amazon S3, e para você consultar os dados utilizando consultas SQL padrão por meio do Amazon Athena, o perfil do IAM anexado ao endpoint deve ter a seguinte política:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": [
"arn:aws:s3:::bucket123",
"arn:aws:s3:::bucket123/*"
]
},
{
"Effect": "Allow",
"Action": [
"glue:CreateDatabase",
"glue:GetDatabase",
"glue:CreateTable",
"glue:DeleteTable",
"glue:UpdateTable",
"glue:GetTable",
"glue:BatchCreatePartition",
"glue:CreatePartition",
"glue:UpdatePartition",
"glue:GetPartition",
"glue:GetPartitions",
"glue:BatchGetPartition"
],
"Resource": [
"arn:aws:glue:*:111122223333:catalog",
"arn:aws:glue:*:111122223333:database/*",
"arn:aws:glue:*:111122223333:table/*"
]
},
{
"Effect": "Allow",
"Action": [
"athena:StartQueryExecution",
"athena:GetQueryExecution",
"athena:CreateWorkGroup"
],
"Resource": "arn:aws:athena:*:111122223333:workgroup/glue_catalog_generation_for_task_*"
}
]
}
Referências
-
Para obter mais informações sobre AWS Glue, consulte Conceitos no Guia do AWS Glue desenvolvedor.
-
Para obter mais informações, AWS Glue Data Catalog consulte Componentes no Guia do AWS Glue desenvolvedor.
Utilizar criptografia de dados, arquivos de parquet e de CDC no destino do Amazon S3
É possível utilizar as configurações do endpoint de destino do S3 para configurar o seguinte:
-
Uma chave do KMS personalizada para criptografar os objetos de destino do S3.
-
Arquivos parquet como o formato de armazenamento para objetos de destino do S3.
-
Captura de dados de alteração (CDC), incluindo a ordem de transações no destino do S3.
-
AWS Glue Data Catalog Integre-se ao seu endpoint de destino do Amazon S3 e consulte dados do Amazon S3 por meio de outros serviços, como o Amazon Athena.
AWS KMS configurações principais para criptografia de dados
Os exemplos a seguir mostram como configurar uma chave do KMS personalizada para criptografar os objetos de destino do S3. Para iniciar, execute o seguinte comando create-endpoint
na CLI,
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder
", "BucketName": "your-bucket-name
", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480"}'
Aqui, o objeto JSON especificado pela opção --s3-settings
define dois parâmetros. Um é um parâmetro EncryptionMode
com o valor SSE_KMS
. O outro é um parâmetro ServerSideEncryptionKmsKeyId
com o valor de arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480
. Esse valor é um Nome de recurso da Amazon (ARN) para a chave personalizada do KMS. Para um destino do S3, você também pode especificar configurações adicionais. Esses identificam o perfil de acesso ao servidor, fornecem delimitadores para o formato de armazenamento de objetos CSV padrão e fornecem o local e o nome do bucket para armazenar objetos de destino do S3.
Por padrão, a criptografia dos dados do S3 ocorre usando a criptografia do lado do servidor do S3. Para o destino do S3 do exemplo anterior, isso também é equivalente a especificar suas configurações de endpoint, como no exemplo a seguir.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder
", "BucketName": "your-bucket-name
", "EncryptionMode": "SSE_S3"}'
Para obter mais informações sobre como trabalhar com a criptografia do lado do servidor do S3, consulte Proteger dados utilizando a criptografia do lado do servidor.
nota
Também é possível utilizar o comando modify-endpoint
na CLI para alterar o valor do parâmetro EncryptionMode
para um endpoint existente de SSE_KMS
para SSE_S3
. Mas não é possível alterar o valor de EncryptionMode
de SSE_S3
para SSE_KMS
.
Configurações para utilizar arquivos .parquet para armazenar objetos de destino do S3
O formato padrão para criar objetos de destino do S3 é arquivos .csv. Os exemplos a seguir mostram algumas configurações de endpoint para especificar arquivos .parquet como o formato para criar objetos de destino do S3. É possível especificar o formato .parquet de arquivos com todos os padrões, como no exemplo a seguir.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "DataFormat": "parquet"}'
Aqui, o parâmetro DataFormat
é definido como parquet
para ativar o formato com todos os padrões do S3. Esses padrões incluem a codificação de um dicionário ("EncodingType: "rle-dictionary"
) que utiliza uma combinação de empacotamento de bits e de codificação de run-length para armazenar valores repetidos.
É possível adicionar outras configurações para opções diferentes do padrão, como no exemplo a seguir.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder",
"BucketName": "your-bucket-name", "CompressionType": "GZIP", "DataFormat": "parquet", "EncodingType: "plain-dictionary", "DictPageSizeLimit": 3,072,000,
"EnableStatistics": false }'
Aqui, além dos parâmetros para várias opções padrão de bucket do S3 e do parâmetro DataFormat
, os seguintes parâmetros adicionais de arquivo .parquet são definidos:
-
EncodingType
: defina uma codificação de dicionário (plain-dictionary
) que armazena os valores encontrados em cada coluna em um bloco por coluna da página do dicionário. -
DictPageSizeLimit
: defina um tamanho máximo de página do dicionário de 3 MB. -
EnableStatistics
: desativa o padrão que ativa a coleção de estatísticas sobre páginas de arquivos Parquet e grupos de linhas.
Captura de dados de alteração (CDC), incluindo a ordem de transações no destino do S3.
Por padrão, quando AWS DMS executa uma tarefa do CDC, ela armazena todas as alterações de linha registradas em seu banco de dados de origem (ou bancos de dados) em um ou mais arquivos para cada tabela. Cada conjunto de arquivos contendo alterações para a mesma tabela reside em um único diretório de destino associado a essa tabela. AWS DMS cria tantos diretórios de destino quanto tabelas de banco de dados migradas para o endpoint de destino do Amazon S3. Os arquivos são armazenados no destino do S3 nesses diretórios, independentemente da ordem da transação. Para obter mais informações sobre as convenções de nomenclatura, o conteúdo e o formato dos dados, consulte Usando o Amazon S3 como destino para AWS Database Migration Service.
Para capturar as alterações do banco de dados de origem de uma forma que também capture a ordem da transação, você pode especificar as configurações do endpoint do S3 que AWS DMS direcionam o armazenamento das alterações de linha de todas as tabelas do banco de dados em um ou mais arquivos.csv criados dependendo do tamanho da transação. Esses arquivos de transação .csv contêm todas as alterações de linhas listadas sequencialmente na ordem da transação de todas as tabelas envolvidas em cada transação. Esses arquivos de transação residem juntos em um único diretório de transações que você também especifica no destino do S3. Em cada arquivo de transação, a operação da transação e a identidade do banco de dados e a tabela de origem de cada alteração de linha são armazenadas como parte dos dados da linha, da seguinte maneira.
operation
,table_name
,database_schema_name
,field_value
,...
Aqui,
é a operação da transação na linha alterada, operation
é o nome da tabela do banco de dados em que a linha foi alterada, table_name
é o nome do esquema do banco de dados em que a tabela reside e database_schema_name
é o primeiro de um ou mais valores de campo que especificam os dados da linha.field_value
O exemplo a seguir de um arquivo de transação mostra as linhas alteradas de uma ou mais transações que envolvem duas tabelas.
I,Names_03cdcad11a,rdsTempsdb,13,Daniel
U,Names_03cdcad11a,rdsTempsdb,23,Kathy
D,Names_03cdcad11a,rdsTempsdb,13,Cathy
I,Names_6d152ce62d,rdsTempsdb,15,Jane
I,Names_6d152ce62d,rdsTempsdb,24,Chris
I,Names_03cdcad11a,rdsTempsdb,16,Mike
Aqui, a operação da transação em cada linha é indicada por I
(inserir), U
(atualizar) ou D
(excluir) na primeira coluna. O nome da tabela é o valor da segunda coluna (por exemplo, Names_03cdcad11a
). O nome do esquema do banco de dados é o valor da terceira coluna (por exemplo, rdsTempsdb
). E as colunas restantes são preenchidas com seus próprios dados da linha (por exemplo, 13,Daniel
).
Além disso, AWS DMS nomeia os arquivos de transação que ele cria no destino do Amazon S3 usando um registro de data e hora de acordo com a seguinte convenção de nomenclatura.
CDC_TXN-
timestamp
.csv
Aqui,
é a hora em que o arquivo de transação foi criado, como no exemplo a seguir. timestamp
CDC_TXN-20201117153046033.csv
Esse timestamp no nome do arquivo garante que os arquivos de transação sejam criados e listados na ordem da transação quando você os lista no diretório de transações.
nota
Ao capturar alterações de dados na ordem da transação, AWS DMS sempre armazena as alterações de linha em arquivos.csv, independentemente do valor da configuração do DataFormat
S3 no destino. AWS DMS não salva as alterações de dados na ordem da transação usando arquivos.parquet.
Para controlar a frequência de gravações em um destino do Amazon S3 durante uma tarefa de replicação de dados, é possível definir as configurações CdcMaxBatchInterval
e CdcMinFileSize
. Isso pode resultar em melhor desempenho ao analisar os dados sem operações adicionais de sobrecarga. Para ter mais informações, consulte Configurações de endpoint ao usar o Amazon S3 como destino para AWS DMS
Para pedir AWS DMS para armazenar todas as alterações de linha na ordem da transação
-
Defina a configuração
PreserveTransactions
do S3 no destino comotrue
. -
Defina a configuração do
CdcPath
S3 no destino para um caminho de pasta relativo no qual você AWS DMS deseja armazenar os arquivos de transação.csv.AWS DMS cria esse caminho no bucket de destino e no diretório de trabalho padrão do S3 ou na pasta do bucket e do bucket que você especifica usando as configurações
BucketName
e doBucketFolder
S3 no destino.
Indicar operações de banco de dados de origem em dados migrados do S3
Ao AWS DMS migrar registros para um destino do S3, ele pode criar um campo adicional em cada registro migrado. Esse campo adicional indica a operação aplicada ao registro no banco de dados de origem. AWS DMS A forma como cria e define esse primeiro campo depende do tipo de tarefa de migração e das configurações de includeOpForFullLoad
cdcInsertsOnly
, cdcInsertsAndUpdates
e.
Em uma carga máxima, quando includeOpForFullLoad
é true
, o AWS DMS sempre cria um primeiro campo adicional em cada registro .csv. Esse campo contém a letra I (INSERT) para indicar que a linha foi inserida no banco de dados de origem. Para uma carga de CDC when cdcInsertsOnly
is false
(o padrão), AWS DMS também sempre cria um primeiro campo adicional em cada registro.csv ou .parquet. Esse campo contém a letra I (INSERT), U (UPDATE) ou D (DELETE) para indicar se a linha foi inserida, atualizada ou excluída no banco de dados de origem.
Na tabela a seguir, é possível ver como as configurações dos atributos includeOpForFullLoad
e cdcInsertsOnly
funcionam em conjunto e afetam a configuração dos registros migrados.
Com essas configurações de parâmetros | O DMS define os registros de destino para a saída .csv e .parquet da seguinte maneira | ||
---|---|---|---|
includeOpForFullLoad | cdcInsertsOnly | Para carga completa | Para carga de CDC |
true |
true |
O valor do primeiro campo definido como I é adicionado |
O valor do primeiro campo definido como I é adicionado |
false |
false |
Nenhum campo é adicionado | O valor do primeiro campo definido como I , U ou D é adicionado |
false |
true |
Nenhum campo é adicionado | Nenhum campo é adicionado |
true |
false |
O valor do primeiro campo definido como I é adicionado |
O valor do primeiro campo definido como I , U ou D é adicionado |
Quando includeOpForFullLoad
e cdcInsertsOnly
forem definidos com o mesmo valor, os registros de destino serão definidos de acordo com o atributo que controla as configurações de registro para o tipo de migração atual. Esse atributo é includeOpForFullLoad
para a carga máxima e cdcInsertsOnly
para a carga da CDC.
Quando includeOpForFullLoad
e cdcInsertsOnly
são definidos com valores diferentes, AWS DMS torna as configurações de registro de destino consistentes tanto para o CDC quanto para a carga total. Isso é feito fazendo com que as configurações de registro de uma carga de CDC com as configurações de qualquer carga máxima anterior especificada por includeOpForFullLoad
estejam em conformidade.
Ou seja, suponha que uma carga máxima está configurada para adicionar um primeiro campo para indicar um registro inserido. Nesse caso, um carregamento de CDC seguinte será configurado para adicionar um primeiro campo que indica um registro inserido, atualizado ou excluído de acordo com a origem. Por outro lado, suponha que um carga máxima está configurada para não adicionar um primeiro campo indicando um registro inserido. Nesse caso, uma carga de CDC também será definida para não adicionar um primeiro campo para cada registro, independentemente das operações de registro correspondentes na origem.
Da mesma forma, a maneira como o DMS cria e define um primeiro campo adicional depende das configurações de includeOpForFullLoad
e de cdcInsertsAndUpdates
. Na tabela a seguir, é possível ver como as configurações dos atributos includeOpForFullLoad
e cdcInsertsAndUpdates
funcionam em conjunto e afetam a configuração dos registros migrados neste formato.
Com essas configurações de parâmetros | O DMS define os registros de destino para a saída .csv da seguinte forma | ||
---|---|---|---|
includeOpForFullLoad | cdcInsertsAndAtualizações | Para carga completa | Para carga de CDC |
true |
true |
O valor do primeiro campo definido como I é adicionado |
O valor do primeiro campo definido como I ou U |
false |
false |
Nenhum campo é adicionado | O valor do primeiro campo definido como I , U ou D é adicionado |
false |
true |
Nenhum campo é adicionado | O valor do primeiro campo definido como I ou U |
true |
false |
O valor do primeiro campo definido como I é adicionado |
O valor do primeiro campo definido como I , U ou D é adicionado |
Tipos de dados de destino do S3 Parquet
A tabela a seguir mostra os tipos de dados de destino do Parquet que são suportados durante o uso AWS DMS e o mapeamento padrão dos tipos de AWS DMS dados.
Para obter informações adicionais sobre AWS DMS os tipos de dados, consulteTipos de dados do AWS Database Migration Service.
AWS DMS tipo de dados |
Tipo de dados parquet do S3 |
---|---|
BYTES |
BINARY |
DATE |
DATE32 |
TIME |
TIME32 |
DATETIME |
TIMESTAMP |
INT1 |
INT8 |
INT2 |
INT16 |
INT4 |
INT32 |
INT8 |
INT64 |
NUMERIC |
DECIMAL |
REAL4 |
FLOAT |
REAL8 |
DOUBLE |
STRING |
STRING |
UINT1 |
UINT8 |
UINT2 |
UINT16 |
UINT4 |
UINT32 |
UINT8 |
UINT64 |
WSTRING |
STRING |
BLOB |
BINARY |
NCLOB |
STRING |
CLOB |
STRING |
BOOLEAN |
BOOL |