Criar integrações ETL zero do Amazon Aurora com o Amazon Redshift - Amazon Relational Database Service

Criar integrações ETL zero do Amazon Aurora com o Amazon Redshift

Ao criar uma integração ETL zero do Amazon RDS, especifique o banco de dados RDS de origem e o data warehouse de destino do Amazon Redshift. Você também pode personalizar as configurações de criptografia e adicionar etiquetas. O Amazon RDS cria uma integração entre o banco de dados de origem e o destino. Quando a integração está ativa, todos os dados inseridos no banco de dados de origem serão replicados no destino configurado do Amazon Redshift.

Pré-requisitos

Antes de criar uma integração ETL zero, é necessário criar um banco de dados de origem e um data warehouse de destino do Amazon Redshift. Também é necessário permitir a replicação no data warehouse adicionando o banco de dados como uma origem de integração autorizada.

Para obter instruções sobre como concluir cada uma dessas etapas, consulte Conceitos básicos das integrações ETL zero do Amazon RDS com o Amazon Redshift.

Permissões obrigatórias

Algumas permissões do IAM são necessárias para criar uma integração ETL zero. No mínimo, são necessárias permissões para executar as seguintes ações:

  • Crie integrações ETL zero para o banco de dados do RDS de origem.

  • Visualizar e excluir todas as integrações ETL zero.

  • Criar integrações de entrada no data warehouse de destino. Você pode remover essa permissão se a mesma conta for proprietária do data warehouse do Amazon Redshift e se essa conta for a entidade principal autorizada desse data warehouse. Para obter informações sobre como adicionar entidades principais autorizadas, consulte Configurar autorização para um data warehouse do Amazon Redshift.

O exemplo de política a seguir demonstra as permissões de privilégio mínimo necessárias para criar e gerenciar integrações. Talvez você não precise dessas permissões exatas se o usuário ou o perfil tiver permissões mais amplas, como uma política gerenciada AdministratorAccess.

nota

Os ARNs do Amazon Redshift têm o formato a seguir. Observe o uso de uma barra ((/) em vez de dois pontos (:) antes do UUID do namespace sem servidor.

  • Cluster provisionado: arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

  • Sem servidor: arn:aws:redshift-serverless:{region}:{account-id}:namespace/namespace-uuid

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "rds:CreateIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:db:source-db", "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "rds:DescribeIntegrations" ], "Resource": ["*"] }, { "Effect": "Allow", "Action": [ "rds:DeleteIntegration", "rds:ModifyIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "redshift:CreateInboundIntegration" ], "Resource": [ "arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid" ] }] }

Escolher um data warehouse de destino em uma conta diferente

Se você planeja especificar um data warehouse de destino do Amazon Redshift que esteja em outraConta da AWS, deverá criar um perfil que permita que os usuários da conta atual acessem os recursos na conta de destino. Para obter mais informações, consulte Fornecer acesso a um usuário do IAM em outra Conta da AWS de sua propriedade.

O perfil deve ter as permissões a seguir, que possibilitam ao usuário visualizar os clusters provisionados do Amazon Redshift e os namespaces do Redshift sem servidor disponíveis na conta de destino.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:DescribeClusters", "redshift-serverless:ListNamespaces" ], "Resource":[ "*" ] } ] }

O perfil deve ter a seguinte política de confiança, que especifica o ID da conta de destino.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS": "arn:aws:iam::{external-account-id}:root" }, "Action":"sts:AssumeRole" } ] }

Para obter instruções sobre como criar o perfil, consulte Criar um perfil usando políticas de confiança personalizadas.

Criar integrações ETL zero

É possível criar uma integração ETL zero usando o AWS Management Console, a AWS CLI ou a API do RDS.

Por padrão, o RDS para MySQL limpa imediatamente os arquivos de log binários. Como as integrações ETL zero dependem de logs binários para replicar dados da origem para o destino, o período de retenção do banco de dados de origem deve ser de pelo menos uma hora. Assim que você cria uma integração, o Amazon RDS verifica o período de retenção do arquivo de log binário para o banco de dados de origem selecionado. Se o valor atual for 0 hora, o Amazon RDS o alterará automaticamente para 1 hora. Caso contrário, o valor permanecerá o mesmo.

Como criar uma integração ETL zero
  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No painel de navegação à esquerda, escolha Integrações ETL zero.

  3. Escolha Criar integração ETL zero.

  4. Em Nome da integração, insira um nome para a integração. O nome pode ter até 60 caracteres alfanuméricos e pode incluir hifens.

  5. Escolha Próximo.

  6. Em Origem, selecione o banco de dados do RDS de onde os dados serão originados.

    nota

    o RDS notifica você caso os parâmetros do de banco de dados não estejam configurados corretamente. Se você receber essa mensagem, poderá escolher Corrigir para mim ou configurá-las manualmente. Para obter instruções sobre como corrigi-los manualmente, consulteEtapa 1: Criar um grupo de parâmetros de de banco de dados personalizado.

    A modificação dos parâmetros de banco de dados requer uma reinicialização. Antes de criar a integração, a reinicialização deve ser concluída e os valores do novo parâmetro deve ser aplicado com êxito ao banco de dados.

  7. Depois que o banco de dados de origem for configurado com êxito, selecione Próximo.

  8. Em Destino 1, faça o seguinte:

    1. (Opcional) Para usar uma Conta da AWS diferente para o destino do Amazon Redshift, escolha Especificar uma conta diferente. Depois, insira o ID da  e o nome de um perfil do IAM com permissões para exibir seus data warehouses. Para obter instruções sobre como criar um perfil do IAM, consulte Escolher um data warehouse de destino em uma conta diferente.

    2. Em Data warehouse do Amazon Redshift, selecione o destino para os dados replicados do banco de dados de origem. Você pode escolher um cluster provisionado do Amazon Redshift ou um namespace do Redshift sem servidor como destino.

    nota

    O RDS notifica você se a política de recursos ou as configurações de diferenciação de maiúsculas e minúsculas do data warehouse especificado não estiverem configuradas corretamente. Se você receber essa mensagem, poderá escolher Corrigir para mim ou configurá-las manualmente. Para obter instruções sobre como corrigi-los manualmente, consulte Ativar a diferenciação de maiúsculas e minúsculas para seu armazém de dados e Configurar a autorização para seu armazém de dados no Guia de gerenciamento do Amazon Redshift.

    A modificação da distinção entre maiúsculas e minúsculas de um cluster provisionado do Redshift requer uma reinicialização. Antes de criar a integração, a reinicialização deve ser concluída e o novo valor do parâmetro deve ser aplicado com êxito ao cluster.

    Se a origem e o destino selecionados estiverem em valores diferentesContas da AWS, o Amazon RDS não poderá corrigir essas configurações para você. Você deve navegar até a outra conta e corrigi-la manualmente no Amazon Redshift.

  9. Depois que seu data warehouse de destino estiver configurado corretamente, escolha Avançar.

  10. (Opcional) Em Etiquetas, adicione uma ou mais etiquetas à integração. Para ter mais informações, consulte Marcar recursos do Amazon RDS.

  11. Em Criptografia, especifique como você deseja que sua integração seja criptografada. Por padrão, o RDS criptografa todas as integrações com uma Chave pertencente à AWS. Para escolher uma chave gerenciada pelo cliente em vez disso, habilite a opção Personalizar configurações de criptografia e escolha uma chave do KMS para criptografia. Para ter mais informações, consulte Criptografar recursos do Amazon RDS.

    Como opção, adicione um contexto de criptografia. Para obter mais informações, consulte Contexto de criptografia no Guia do desenvolvedor AWS Key Management Service.

    nota

    O Amazon RDS adiciona os seguintes pares de contexto de criptografia, além dos adicionados por você:

    • aws:redshift:integration:arn - IntegrationArn

    • aws:servicename:id - Redshift

    Isso reduz o número geral de pares que você pode adicionar de oito para seis e contribui com o limite geral de caracteres da restrição de concessão. Para ter mais informações, consulte Using grant constraints no Guia do desenvolvedor do AWS Key Management Service.

  12. Escolha Próximo.

  13. Revise suas configurações de integração e escolha Criar integração sem ETL.

    Se a criação falhar, consulte Não consigo criar uma integração ETL zero. para conferir etapas de solução de problemas.

A integração tem um status de Creating enquanto está sendo criada, e o data warehouse de destino do Amazon Redshift tem um status de Modifying. Durante esse período, você não pode consultar o data warehouse nem alterar sua configuração.

Quando a integração tiver sido criada com sucesso, o status da integração e do data warehouse de destino do Amazon Redshift vão mudar para Active.

Para criar uma integração sem ETL usando oAWS CLI, use o comando create-integration com as seguintes opções:

  • --integration-name— Especifique um nome para a integração.

  • --source-arn: especifique o ARN do banco de dados do RDS que será a origem da integração.

  • --target-arn: especifique o ARN do data warehouse do Amazon Redshift que será o destino da integração.

Para Linux, macOS ou Unix:

aws rds create-integration \ --integration-name my-integration \ --source-arn arn:aws:rds:{region}:{account-id}:my-db \ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

Para Windows:

aws rds create-integration ^ --integration-name my-integration ^ --source-arn arn:aws:rds:{region}:{account-id}:my-db ^ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

Para criar uma implantação azul/verde usando a API do Amazon RDS, use a operação CreateIntegration com os seguintes parâmetros:

  • IntegrationName— Especifique um nome para a integração.

  • SourceArn: especifique o ARN do banco de dados do RDS que será a origem da integração.

  • TargetArn: especifique o ARN do data warehouse do Amazon Redshift que será o destino da integração.

Criptografar integrações com uma chave gerenciada pelo cliente

Se você especificar uma chave do KMS personalizada em vez de uma Chave pertencente à AWS ao criar uma integração, a política de chaves deverá fornecer ao serviço Amazon Redshift um acesso de entidade principal à ação CreateGrant. Além disso, ele deve permitir que a conta ou o perfil do solicitante execute as ações DescribeKey e CreateGrant.

Os exemplos de declaração de política de chaves a seguir demonstram as permissões necessárias em seu documento de política. Alguns exemplos incluem chaves de contexto para reduzir ainda mais o escopo das permissões.

A declaração de política a seguir permite que a conta ou o perfil do solicitante recupere informações sobre uma chave do KMS.

{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:DescribeKey", "Resource":"*" }

A declaração de política a seguir permite que a conta ou o perfil do solicitante adicione uma concessão a uma chave do KMS. A chave de condição kms:ViaService limita o uso da chave do KMS para solicitações provenientes do Amazon RDS.

{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:CreateGrant", "Resource":"*", "Condition":{ "StringEquals":{ "kms:EncryptionContext:{context-key}":"{context-value}", "kms:ViaService":"rds.{region}.amazonaws.com" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }

A declaração de política a seguir permite que a entidade principal do serviço Amazon Redshift adicione uma concessão a uma chave do KMS.

{ "Effect":"Allow", "Principal":{ "Service":"redshift.amazonaws.com" }, "Action":"kms:CreateGrant", "Resource":"*", "Condition":{ "StringEquals":{ "kms:EncryptionContext:{context-key}":"{context-value}", "aws:SourceAccount":"{account-ID}" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] }, "ArnLike":{ "aws:SourceArn":"arn:aws:*:{region}:{account-ID}:integration:*" } } }

Para obter mais informações, consulte Criar uma política de chave no Guia do desenvolvedor do AWS Key Management Service.

Próximas etapas

Depois de criar com sucesso uma integração ETL zero, você deve criar um banco de dados de destino em seu cluster ou grupo de trabalho de destino do Amazon Redshift. Depois, você poderá começar a adicionar dados ao banco de dados do RDS e consultá-los no Amazon Redshift. Para obter instruções, consulte Criar bancos de dados de destino no Amazon Redshift.