

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

# Aurora PostgreSQL
<a name="aurora-PostgreSQL"></a>

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

**Topics**
+ [Pré-requisitos do Aurora PostgreSQL](#aurora-PostgreSQL-prereqs)
+ [Etapa 1: configurar a função do pipeline](#aurora-mysql-pipeline-role)
+ [Etapa 2: Criar o pipeline](#aurora-PostgreSQL-pipeline)
+ [Consistência de dados](#aurora-mysql-pipeline-consistency)
+ [Mapear tipo de dados](#aurora-PostgreSQL-pipeline-mapping)
+ [Limitações](#aurora-PostgreSQL-pipeline-limitations)
+ [CloudWatch Alarmes recomendados](#aurora-mysql-pipeline-metrics)

## Pré-requisitos do Aurora PostgreSQL
<a name="aurora-PostgreSQL-prereqs"></a>

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

1. [Crie um grupo personalizado de parâmetros de cluster do banco de dados](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.CreatingConnecting.Aurora.html) no Amazon Aurora para configurar a replicação lógica.

   ```
   rds.logical_replication=1
       aurora.enhanced_logical_replication=1
       aurora.logical_replication_backup=0
       aurora.logical_replication_globaldb=0
   ```

1. [Selecione ou crie um cluster do banco de dados Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.CreatingConnecting.Aurora.html) e associe o grupo de parâmetros criado na etapa 1 ao cluster do banco de dados.

1. Configure a autenticação de nome de usuário e senha no cluster do Amazon Aurora usando o [gerenciamento de senhas com o Aurora e o AWS Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html). Você também pode criar uma username/password combinação [criando um segredo do Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

1. 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 Aurora para o Amazon S3.

   O perfil do IAM também 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/*"
                   ]
               }
           ]
       }
   ```

------

   O perfil também deve ter a seguinte relação de confiança:

------
#### [ JSON ]

****  

   ```
   {
           "Version":"2012-10-17",		 	 	 
           "Statement": [
               {
                   "Effect": "Allow",
                   "Principal": {
                       "Service": "export.rds.amazonaws.com"
                   },
                   "Action": "sts:AssumeRole"
               }
           ]
       }
   ```

------

1. 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](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains) e [Criação de coleções](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-manage.html#serverless-create).

1. Anexe uma [política baseada em recursos](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ac.html#ac-types-resource) ao seu domínio ou uma [política de acesso a dados](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html) à sua coleção. Essas políticas de acesso permitem que o OpenSearch Inestion grave dados do seu cluster de banco de dados Amazon Aurora em seu domínio ou coleção.

## Etapa 1: configurar a função do pipeline
<a name="aurora-mysql-pipeline-role"></a>

Depois de configurar os pré-requisitos de pipeline do Amazon Aurora, [configure o perfil do pipeline](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/pipeline-security-overview.html#pipeline-security-sink) para usar na configuração do pipeline. Adicione também ao perfil as seguintes permissões para a origem do Amazon Aurora:

------
#### [ JSON ]

****  

```
{
    "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:*:111122223333:network-interface/*",
    "arn:aws:ec2:*:111122223333:subnet/*",
    "arn:aws:ec2:*:111122223333:security-group/*"
    ]
    },
    {
    "Sid": "allowDescribeEC2",
    "Effect": "Allow",
    "Action": [
    "ec2:Describe*"
    ],
    "Resource": "*"
    },
    {
    "Sid": "allowTagCreation",
    "Effect": "Allow",
    "Action": [
    "ec2:CreateTags"
    ],
    "Resource": "arn:aws:ec2:*:111122223333:network-interface/*",
    "Condition": {
    "StringEquals": {
    "aws:RequestTag/OSISManaged": "true"
    }
    }
    },
    {
    "Sid": "AllowDescribeInstances",
    "Effect": "Allow",
    "Action": [
    "rds:DescribeDBInstances"
    ],
    "Resource": [
    "arn:aws:rds:us-east-2:111122223333:db:*"
    ]
    },
    {
    "Sid": "AllowDescribeClusters",
    "Effect": "Allow",
    "Action": [
    "rds:DescribeDBClusters"
    ],
    "Resource": [
    "arn:aws:rds:us-east-2:111122223333:cluster:DB-id"
    ]
    },
    {
    "Sid": "AllowSnapshots",
    "Effect": "Allow",
    "Action": [
    "rds:DescribeDBClusterSnapshots",
    "rds:CreateDBClusterSnapshot",
    "rds:AddTagsToResource"
    ],
    "Resource": [
    "arn:aws:rds:us-east-2:111122223333:cluster:DB-id",
    "arn:aws:rds:us-east-2:111122223333:cluster-snapshot:DB-id*"
    ]
    },
    {
    "Sid": "AllowExport",
    "Effect": "Allow",
    "Action": [
    "rds:StartExportTask"
    ],
    "Resource": [
    "arn:aws:rds:us-east-2:111122223333:cluster:DB-id",
    "arn:aws:rds:us-east-2:111122223333:cluster-snapshot:DB-id*"
    ]
    },
    {
    "Sid": "AllowDescribeExports",
    "Effect": "Allow",
    "Action": [
    "rds:DescribeExportTasks"
    ],
    "Resource": "*",
    "Condition": {
    "StringEquals": {
    "aws:RequestedRegion": "us-east-2",
    "aws:ResourceAccount": "111122223333"
    }
    }
    },
    {
    "Sid": "AllowAccessToKmsForExport",
    "Effect": "Allow",
    "Action": [
    "kms:Decrypt",
    "kms:Encrypt",
    "kms:DescribeKey",
    "kms:RetireGrant",
    "kms:CreateGrant",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*"
    ],
    "Resource": [
    "arn:aws:kms:us-east-2:111122223333:key/export-key-id"
    ]
    },
    {
    "Sid": "AllowPassingExportRole",
    "Effect": "Allow",
    "Action": "iam:PassRole",
    "Resource": [
    "arn:aws:iam::111122223333:role/export-role"
    ]
    },
    {
    "Sid": "SecretsManagerReadAccess",
    "Effect": "Allow",
    "Action": [
    "secretsmanager:GetSecretValue"
    ],
    "Resource": [
    "arn:aws:secretsmanager:*:111122223333:secret:*"
    ]
    }
    ]
    }
```

------

## Etapa 2: Criar o pipeline
<a name="aurora-PostgreSQL-pipeline"></a>

Configure um pipeline OpenSearch de ingestão como o seguinte, que especifica o cluster Aurora PostgreSQL como origem. 

```
version: "2"
aurora-postgres-pipeline:
  source:
    rds:
      db_identifier: "cluster-id"
      engine: aurora-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 Aurora para criar esse pipeline. Para saber mais, consulte [Trabalhar com esquemas](pipeline-blueprint.md).

Para usar o Amazon Aurora como origem, você precisa configurar o acesso à VPC para o pipeline. A VPC escolhida deve ser a mesma VPC que a origem do Amazon Aurora usa. Depois, selecione 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, por isso, você também deve se certificar de que o cluster do Aurora esteja configurado com um grupo de segurança da VPC que permita tráfego de entrada do grupo de segurança da VPC do pipeline para a porta do banco de dados. Para saber mais, consulte [Controlar o acesso com grupos de segurança](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Overview.RDSSecurityGroups.html).

Se você estiver usando o Console de gerenciamento da AWS 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**, marque a caixa de seleção **Anexar à VPC** e escolha seu CIDR em uma das opções padrão fornecidas ou selecione a 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](https://datatracker.ietf.org/doc/html/rfc1918).

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 Aurora, certifique-se de que o CIDR do Amazon Aurora VPC seja diferente do CIDR para ingestão. OpenSearch 

Para saber mais, consulte [Configurar o acesso à VPC para um pipeline](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/pipeline-security.html#pipeline-vpc-configure).

## Consistência de dados
<a name="aurora-mysql-pipeline-consistency"></a>

O pipeline garante a consistência dos dados pesquisando ou recebendo continuamente alterações do cluster Amazon Aurora 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 Aurora seja reconciliada com as alterações correspondentes do documento. OpenSearch

## Mapear tipo de dados
<a name="aurora-PostgreSQL-pipeline-mapping"></a>

OpenSearch O pipeline de ingestão mapeia os tipos de dados do Aurora PostgreSQL para representações que são OpenSearch adequadas 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](https://opensearch.org/docs/latest/field-types/#dynamic-mapping) 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 Aurora 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 Aurora PostgreSQL e geralmente podem permitir melhores recursos de pesquisa disponíveis no. OpenSearch


| Tipo de dado do Aurora PostgreSQL | Tipo de OpenSearch campo padrão | Tipo de OpenSearch campo recomendado | 
| --- | --- | --- | 
| smallint | longo | curto | 
| integer | longo | integer | 
| bigint | longo | longo | 
| decimal | texto | double ou keyword | 
| numeric[ (p, s) ] | texto | double ou keyword | 
| 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) | texto | texto | 
| varchar(n) | texto | texto | 
| character(n) | texto | texto | 
| char(n) | texto | texto | 
| bpchar(n) | texto | texto | 
| bpchar | texto | texto | 
| texto | texto | texto | 
| enum | texto | texto | 
| bytea | texto | binary | 
| timestamp [ (p) ] [ sem fuso horário ] | long (em milissegundos epoch) | date | 
| timestamp [ (p) ] com fuso horário | long (em milissegundos epoch) | date | 
| date | long (em milissegundos epoch) | date | 
| hora [ (p) ] [ sem fuso horário ] | long (em milissegundos epoch) | date | 
| hora [ (p) ] com fuso horário | long (em milissegundos epoch) | date | 
| interval [ fields ] [ (p) ] | texto (ISO8601 formato) | texto | 
| booleano | booleano | booleano | 
| point | text (em formato WKT) | geo\$1shape | 
| linha | text (em formato WKT) | geo\$1shape | 
| lseg | text (em formato WKT) | geo\$1shape | 
| box | text (em formato WKT) | geo\$1shape | 
| caminho | text (em formato WKT) | geo\$1shape | 
| polígono | text (em formato WKT) | geo\$1shape | 
| circle | objeto | objeto | 
| cidr | texto | texto | 
| inet | texto | texto | 
| macaddr | texto | texto | 
| macaddr8 | texto | texto | 
| bit(n) | longo | byte, short, integer, ou long (dependendo do número de bits) | 
| bit variável (n) | longo | byte, short, integer, ou long (dependendo do número de bits) | 
| json | objeto | objeto | 
| jsonb | objeto | objeto | 
| jsonpath | texto | texto | 

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
<a name="aurora-PostgreSQL-pipeline-limitations"></a>

Considere as seguintes limitações ao configurar um pipeline de OpenSearch ingestão para o Aurora PostgreSQL:
+ A integração é compatível com apenas um banco de dados Aurora PostgreSQL por pipeline.
+ Atualmente, a integração não oferece suporte à ingestão de dados entre regiões; seu cluster OpenSearch e domínio do Amazon Aurora devem estar no mesmo. Região da AWS
+ Atualmente, a integração não oferece suporte à ingestão de dados entre contas; seu cluster do Amazon Aurora OpenSearch e seu pipeline de ingestão devem estar no mesmo. Conta da AWS
+ Certifique-se de que a autenticação esteja habilitada no cluster do Amazon Aurora usando o 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 nome do banco de dados e/ou tabela de um pipeline, você deve parar o pipeline e reiniciá-lo com uma configuração atualizada ou criar um novo pipeline.
+ Instruções em Data Definition Language (DDL) não são compatíveis em geral. A consistência de dados não será mantida se:
  + As chaves primárias são alteradas (add/delete/rename).
  + As tabelas forem eliminadas/truncadas.
  + Os nomes das colunas ou os tipos de dados forem alterados.
+ Se as tabelas Aurora PostgreSQL a serem sincronizadas não tiverem chaves primárias definidas, a consistência de 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.
+ Versões compatíveis: Aurora PostgreSQL versão 16.4 e acima. 

## CloudWatch Alarmes recomendados
<a name="aurora-mysql-pipeline-metrics"></a>

As CloudWatch métricas a seguir são recomendadas para monitorar o desempenho do seu pipeline de ingestão. Essas métricas podem ajudar a identificar a quantidade de dados processados nas exportações, a quantidade de eventos processados nos 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 | Description | 
| --- | --- | 
| 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. | 