RDS para PostgreSQL - OpenSearch Serviço Amazon

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á.

RDS para PostgreSQL

Conclua as etapas a seguir para configurar um pipeline OpenSearch de ingestão com o Amazon RDS for RDS for PostgreSQL.

Pré-requisitos do RDS para PostgreSQL

Antes de criar seu pipeline OpenSearch de ingestão, execute as seguintes etapas:

  1. Crie um grupo de parâmetros de banco de dados personalizado no Amazon RDS para configurar a replicação lógica.

    rds.logical_replication=1

    Para obter mais informações, consulte Execução da replicação lógica para o Amazon RDS for PostgreSQL.

  2. Selecione ou crie uma instância de banco de dados RDS para PostgreSQL e associe o grupo de parâmetros criado na etapa 1 à instância de banco de dados.

  3. Configure a autenticação de nome de usuário e senha na sua instância do Amazon RDS usando o gerenciamento de senhas com Aurora e. AWS Secrets Manager Você também pode criar uma username/password combinação criando um segredo do Secrets Manager.

  4. Se você usar o recurso de snapshot inicial completo, crie uma função AWS KMS key e uma do IAM para exportar dados do Amazon RDS para o Amazon S3.

    A função do IAM deve ter a seguinte política de permissão:

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Sid": "ExportPolicy", "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::s3-bucket-used-in-pipeline", "arn:aws:s3:::s3-bucket-used-in-pipeline/*" ] } ] }

    A função também deve ter as seguintes relações de confiança:

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  5. Selecione ou crie um domínio OpenSearch de serviço ou uma coleção OpenSearch sem servidor. Para obter mais informações, consulte Criação OpenSearch de domínios de serviço e Criação de coleções.

  6. Anexe uma política baseada em recursos ao seu domínio ou uma política de acesso a dados à sua coleção. Essas políticas de acesso permitem que o OpenSearch Inestion grave dados da sua instância de banco de dados Amazon RDS em seu domínio ou coleção.

Etapa 1: configurar a função do pipeline

Depois de configurar os pré-requisitos do pipeline do Amazon RDS, configure a função do pipeline a ser usada na configuração do pipeline. Adicione também as seguintes permissões para a fonte do Amazon RDS à função:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allowReadingFromS3Buckets", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:DeleteObject", "s3:GetBucketLocation", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::s3_bucket", "arn:aws:s3:::s3_bucket/*" ] }, { "Sid": "allowNetworkInterfacesActions", "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": [ "arn:aws:ec2:*:account-id:network-interface/*", "arn:aws:ec2:*:account-id:subnet/*", "arn:aws:ec2:*:account-id:security-group/*" ] }, { "Sid": "allowDescribeEC2", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": "*" }, { "Sid": "allowTagCreation", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:account-id:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } }, { "Sid": "AllowDescribeInstances", "Effect": "Allow", "Action": [ "rds:DescribeDBInstances" ], "Resource": [ "arn:aws:rds:region:account-id:db:*" ] }, { "Sid": "AllowSnapshots", "Effect": "Allow", "Action": [ "rds:DescribeDBSnapshots", "rds:CreateDBSnapshot", "rds:AddTagsToResource" ], "Resource": [ "arn:aws:rds:region:account-id:db:DB-id", "arn:aws:rds:region:account-id:snapshot:DB-id*" ] }, { "Sid": "AllowExport", "Effect": "Allow", "Action": [ "rds:StartExportTask" ], "Resource": [ "arn:aws:rds:region:account-id:snapshot:DB-id*" ] }, { "Sid": "AllowDescribeExports", "Effect": "Allow", "Action": [ "rds:DescribeExportTasks" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "region", "aws:ResourceAccount": "account-id" } } }, { "Sid": "AllowAccessToKmsForExport", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:DescribeKey", "kms:RetireGrant", "kms:CreateGrant", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:region:account-id:key/export-key-id" ] }, { "Sid": "AllowPassingExportRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::account-id:role/export-role" ] }, { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:*:account-id:secret:*" ] } ] }

Etapa 2: Criar o pipeline

Configure um pipeline de OpenSearch ingestão como o seguinte, que especifica uma instância do RDS para PostgreSQL como origem.

version: "2" rds-postgres-pipeline: source: rds: db_identifier: "instance-id" engine: postgresql database: "database-name" tables: include: - "schema1.table1" - "schema2.table2" s3_bucket: "bucket-name" s3_region: "bucket-region" s3_prefix: "prefix-name" export: kms_key_id: "kms-key-id" iam_role_arn: "export-role-arn" stream: true aws: sts_role_arn: "arn:aws:iam::account-id:role/pipeline-role" region: "us-east-1" authentication: username: ${{aws_secrets:secret:username}} password: ${{aws_secrets:secret:password}} sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] index: "${getMetadata(\"table_name\")}" index_type: custom document_id: "${getMetadata(\"primary_key\")}" action: "${getMetadata(\"opensearch_action\")}" document_version: "${getMetadata(\"document_version\")}" document_version_type: "external" aws: sts_role_arn: "arn:aws:iam::account-id:role/pipeline-role" region: "us-east-1" extension: aws: secrets: secret: secret_id: "rds-secret-id" region: "us-east-1" sts_role_arn: "arn:aws:iam::account-id:role/pipeline-role" refresh_interval: PT1H
nota

Você pode usar um esquema pré-configurado do Amazon RDS para criar esse pipeline. Para obter mais informações, consulte Trabalhando com plantas.

Para usar o Amazon Aurora como fonte, você precisa configurar o acesso à VPC para o pipeline. A VPC que você escolher deve ser a mesma VPC que sua fonte do Amazon Aurora usa. Em seguida, escolha uma ou mais sub-redes e um ou mais grupos de segurança da VPC. Observe que o pipeline precisa de acesso de rede a um banco de dados MySQL do Aurora, então você também deve verificar se seu cluster do Aurora está configurado com um grupo de segurança VPC que permite tráfego de entrada do grupo de segurança VPC do pipeline para a porta do banco de dados. Para obter mais informações, consulte Controle de acesso com grupos de segurança.

Se você estiver usando o AWS Management Console para criar seu pipeline, você também deve anexar seu pipeline à sua VPC para usar o Amazon Aurora como fonte. Para fazer isso, encontre a seção Configuração de rede, escolha Anexar à VPC e escolha seu CIDR em uma das opções padrão fornecidas ou selecione sua própria. Você pode usar qualquer CIDR de um espaço de endereço privado, conforme definido em Melhor prática atual RFC 1918.

Para fornecer um CIDR personalizado, selecione Outro no menu suspenso. Para evitar uma colisão de endereços IP entre a OpenSearch ingestão e o Amazon RDS, certifique-se de que o CIDR do Amazon Aurora VPC seja diferente do CIDR para ingestão. OpenSearch

Para obter mais informações, consulte Configurar o acesso à VPC para um pipeline.

Consistência de dados

O pipeline garante a consistência dos dados pesquisando continuamente ou recebendo alterações da instância do Amazon RDS e atualizando os documentos correspondentes no OpenSearch índice.

OpenSearch A ingestão suporta o end-to-end reconhecimento para garantir a durabilidade dos dados. Quando um pipeline lê snapshots ou fluxos, ele cria partições dinamicamente para processamento paralelo. O pipeline marca uma partição como concluída quando ela recebe uma confirmação após a ingestão de todos os registros no OpenSearch domínio ou na coleção. Se quiser fazer a ingestão em uma coleção de pesquisa OpenSearch sem servidor, você pode gerar uma ID de documento no pipeline. Se você quiser fazer a ingestão em uma coleção de séries temporais OpenSearch sem servidor, observe que o pipeline não gera uma ID de documento, portanto, você deve omiti-lo document_id: "${getMetadata(\"primary_key\")}" na configuração do coletor do pipeline.

Um pipeline OpenSearch de ingestão também mapeia as ações de eventos recebidos em ações de indexação em massa correspondentes para ajudar a ingerir documentos. Isso mantém os dados consistentes, de modo que cada alteração de dados no Amazon RDS seja reconciliada com as alterações correspondentes no documento. OpenSearch

Mapear tipo de dados

OpenSearch O pipeline de ingestão mapeia os tipos de dados do PostgreSQL em representações adequadas OpenSearch para o consumo de domínios ou coleções de serviços. Se nenhum modelo de mapeamento estiver definido em OpenSearch, determine OpenSearch automaticamente os tipos de campo com um mapeamento dinâmico baseado no primeiro documento enviado. Você também pode definir explicitamente os tipos de campo que funcionam melhor para você por OpenSearch meio de um modelo de mapeamento.

A tabela abaixo lista os tipos de dados do RDS para PostgreSQL e os tipos de campo correspondentes. OpenSearch A coluna Tipo de OpenSearch campo padrão mostra o tipo de campo correspondente OpenSearch se nenhum mapeamento explícito for definido. Nesse caso, determina OpenSearch automaticamente os tipos de campo com mapeamento dinâmico. A coluna Tipo de OpenSearch campo recomendado é o tipo de campo recomendado correspondente a ser especificado explicitamente em um modelo de mapeamento. Esses tipos de campo estão mais alinhados com os tipos de dados no RDS para PostgreSQL e geralmente podem permitir melhores recursos de pesquisa disponíveis no. OpenSearch

Tipo de dados do RDS para PostgreSQL Tipo de OpenSearch campo padrão Tipo de OpenSearch campo recomendado
smallint longo curto
integer longo integer
bigint longo longo
decimal text duplo ou palavra-chave
numérico [(p, s)] text duplo ou palavra-chave
real flutuação flutuação
double precision flutuação double
smallserial longo curto
serial longo integer
bigserial longo longo
money objeto objeto
caractere variável(n) text text
varchar(n) text text
character(n) text text
char(n) text text
bóchar (n) text text
bóchar text text
text text text
enum text text
bytea text binary
timestamp [(p)] [sem fuso horário] longo (em milissegundos de época) date
timestamp [(p)] com fuso horário longo (em milissegundos de época) date
date longo (em milissegundos de época) date
hora [ (p) ] [ sem fuso horário ] longo (em milissegundos de época) date
hora [(p)] com fuso horário longo (em milissegundos de época) date
intervalo [campos] [(p)] texto (formato ISO86 01) text
boolean boolean boolean
point texto (no formato WKT) geo_shape
linha texto (no formato WKT) geo_shape
perna texto (no formato WKT) geo_shape
caixa texto (no formato WKT) geo_shape
caminho texto (no formato WKT) geo_shape
polígono texto (no formato WKT) geo_shape
circular objeto objeto
cidr text text
inet text text
macaddr text text
macaddr8 text text
bit(n) longo byte, curto, inteiro ou longo (dependendo do número de bits)
bit variável (n) longo byte, curto, inteiro ou longo (dependendo do número de bits)
json objeto objeto
jsonb objeto objeto
jsonpath text text

Recomendamos que você configure a fila de mensagens mortas (DLQ) em seu pipeline de ingestão. OpenSearch Se você configurou a fila, o OpenSearch Service envia todos os documentos com falha que não podem ser ingeridos devido a falhas de mapeamento dinâmico para a fila.

Se os mapeamentos automáticos falharem, será possível usar template_type e template_content na configuração do pipeline para definir regras de mapeamento explícitas. Como alternativa, é possível criar modelos de mapeamento diretamente no seu domínio de pesquisa ou na sua coleção antes de iniciar o pipeline.

Limitações

Considere as seguintes limitações ao configurar um pipeline de OpenSearch ingestão para RDS para PostgreSQL:

  • A integração suporta apenas um banco de dados PostgreSQL por pipeline.

  • Atualmente, a integração não oferece suporte à ingestão de dados entre regiões; sua instância e OpenSearch domínio do Amazon RDS devem estar nos mesmos. Região da AWS

  • Atualmente, a integração não oferece suporte à ingestão de dados entre contas; sua instância do Amazon RDS e seu pipeline de OpenSearch ingestão devem estar no mesmo nível. Conta da AWS

  • Certifique-se de que a instância do Amazon RDS tenha a autenticação habilitada usando AWS Secrets Manager, que é o único mecanismo de autenticação compatível.

  • A configuração existente do pipeline não pode ser atualizada para ingerir dados de um banco de dados diferente ou de and/or uma tabela diferente. Para atualizar o banco de dados e/ou o nome da tabela de um pipeline, você precisa interromper o pipeline e reiniciá-lo com uma configuração atualizada ou criar um novo pipeline.

  • As instruções de linguagem de definição de dados (DDL) geralmente não são suportadas. A consistência dos dados não será mantida se:

    • As chaves primárias são alteradas (add/delete/rename).

    • As tabelas são eliminadas/truncadas.

    • Os nomes das colunas ou os tipos de dados são alterados.

  • Se as tabelas do PostgreSQL a serem sincronizadas não tiverem chaves primárias definidas, a consistência dos dados não será garantida. Você precisará definir a document_id opção personalizada OpenSearch e a configuração do coletor corretamente para poder updates/deletes sincronizar com OpenSearch.

  • Não há suporte para clusters de banco de dados RDS Multi-AZ.

  • Versões suportadas: PostgreSQL 16 e superior.

CloudWatch Alarmes recomendados

As CloudWatch métricas a seguir são recomendadas para monitorar o desempenho do seu pipeline de ingestão. Essas métricas podem ajudá-lo a identificar a quantidade de dados processados nas exportações, o número de eventos processados a partir de fluxos, os erros no processamento de exportações e eventos de fluxo e o número de documentos gravados no destino. Você pode configurar CloudWatch alarmes para realizar uma ação quando uma dessas métricas exceder um valor especificado por um determinado período de tempo.

Métrica Descrição
pipeline-name.RDS. Credenciais alteradas Essa métrica indica com que frequência AWS os segredos são alternados.
pipeline-name.rds. executorRefreshErrors Essa métrica indica falhas na atualização de AWS segredos.
pipeline-name.rds. exportRecordsTotal Essa métrica indica o número de registros exportados do Amazon Aurora.
pipeline-name.rds. exportRecordsProcessed Essa métrica indica o número de registros processados pelo pipeline OpenSearch de ingestão.
pipeline-name.rds. exportRecordProcessingErros Essa métrica indica o número de erros de processamento em um pipeline OpenSearch de ingestão durante a leitura dos dados de um cluster do Amazon Aurora.
pipeline-name.rds. exportRecordsSuccessTotal Essa métrica indica o número total de registros de exportação processados com êxito.
pipeline-name.rds. exportRecordsFailedTotal Essa métrica indica o número total de registros de exportação com falha no processamento.
pipeline-name.rds.bytes recebidos Essa métrica indica o número total de bytes recebidos por um pipeline OpenSearch de ingestão.
pipeline-name.rds.Bytes processados Essa métrica indica o número total de bytes processados por um pipeline OpenSearch de ingestão.
pipeline-name.rds. streamRecordsSuccessTotal Essa métrica indica o número de registros processados com êxito a partir do fluxo.
pipeline-name.rds. streamRecordsFailedTotal Essa métrica indica o número total de registros com falha no processamento do fluxo.