

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

# Usando um pipeline OpenSearch de ingestão com o Amazon Aurora
<a name="configure-client-aurora"></a>

Você pode usar um pipeline de OpenSearch ingestão com o Amazon Aurora para exportar dados existentes e transmitir alterações (como criar, atualizar e excluir) para domínios e coleções do OpenSearch Amazon Service. O pipeline OpenSearch de ingestão incorpora a infraestrutura de captura de dados de alteração (CDC) para fornecer uma forma de alta escala e baixa latência de transmitir dados continuamente do Amazon Aurora. O Aurora MySQL e o Aurora PostgreSQL são compatíveis.

Há duas maneiras de usar o Amazon Aurora como origem para processar dados: com e sem um snapshot inicial completo. Um snapshot inicial completo é um snapshot das tabelas especificadas, e ele é exportado para o Amazon S3. A partir daí, um pipeline de OpenSearch ingestão o envia para um índice em um domínio ou o particiona em vários índices em um domínio. Para manter os dados no Amazon Aurora e OpenSearch consistentes, o pipeline sincroniza todos os eventos de criação, atualização e exclusão nas tabelas dos clusters do Amazon Aurora com os documentos salvos no índice ou índices. OpenSearch 

Quando você usa um snapshot inicial completo, seu pipeline de OpenSearch ingestão primeiro ingere o snapshot e depois começa a ler os dados dos fluxos de alterações do Amazon Aurora. Eventualmente, ele recupera e mantém a consistência de dados quase em tempo real entre o Amazon Aurora e. OpenSearch 

Você também pode usar a integração de OpenSearch ingestão com o Amazon Aurora para rastrear alterações na captura de dados e ingerir todas as atualizações no Aurora para. OpenSearch Escolha essa opção se você já tiver um snapshot completo de algum outro mecanismo ou se quiser apenas capturar todas as alterações nos dados do cluster do Amazon Aurora. 

Ao escolher essa opção, você precisa [configurar o registro em log binário para o Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.MySQL.BinaryFormat.html) ou [configurar a replicação lógica para o AuroraPostgreSQL no cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Replication.Logical.Configure.html). 

**Topics**
+ [Aurora MySQL](aurora-mysql.md)
+ [Aurora PostgreSQL](aurora-PostgreSQL.md)

# Aurora MySQL
<a name="aurora-mysql"></a>

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

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

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

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

1. [Crie um grupo de parâmetros do cluster do banco de dados Aurora no Amazon Aurora para configurar o registro em log binário](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.setting-up.html#zero-etl.parameters).

   ```
   aurora_enhanced_binlog=1
   binlog_backup=0
   binlog_format=ROW
   binlog_replication_globaldb=0
   binlog_row_image=full
   binlog_row_metadata=full
   ```

   Além disso, certifique-se de que o parâmetro `binlog_transaction_compression` não esteja definido como `ON` e de que o parâmetro `binlog_row_value_options` não esteja definido como `PARTIAL_JSON`.

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

1. [Configure a retenção de logs binários como 24 horas ou mais](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/mysql-stored-proc-configuring.html). 

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-mysql-pipeline"></a>

Configure um pipeline de OpenSearch ingestão semelhante ao seguinte. O exemplo de pipeline especifica um cluster do Amazon Aurora como origem. 

```
version: "2"
aurora-mysql-pipeline:
  source:
    rds:
      db_identifier: "cluster-id"
      engine: aurora-mysql
      database: "database-name"
      tables:
        include:
          - "table1"
          - "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
```

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-mysql-pipeline-mapping"></a>

OpenSearch O pipeline de ingestão mapeia os tipos de dados do MySQL em representações que são adequadas OpenSearch para o consumo de domínios ou coleções de serviços. Se nenhum modelo de mapeamento estiver definido em OpenSearch, determina OpenSearch automaticamente os tipos de campo com [mapeamento dinâmico](https://opensearch.org/docs/latest/field-types/#dynamic-mapping) com base 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 MySQL e os tipos de OpenSearch campo correspondentes. 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 correspondente que é recomendado especificar explicitamente em um modelo de mapeamento. Esses tipos de campo estão mais alinhados com os tipos de dados no MySQL e geralmente podem permitir melhores recursos de pesquisa disponíveis no. OpenSearch


| Tipo de dados MySQL | Tipo de OpenSearch campo padrão | Tipo de OpenSearch campo recomendado | 
| --- | --- | --- | 
| BIGINT | longo | longo | 
| BIGINT UNSIGNED | longo | unsigned long | 
| BIT | longo | byte, short, integer ou long dependendo do número de bits | 
| DECIMAL | texto | double ou keyword | 
| DOUBLE | flutuação | double | 
| FLOAT | flutuação | flutuação | 
| INT | longo | integer | 
| INT UNSIGNED | longo | longo | 
| MEDIUMINT | longo | integer | 
| MEDIUMINT UNSIGNED | longo | integer | 
| NUMERIC | texto | double ou keyword | 
| SMALLINT | longo | curto | 
| SMALLINT UNSIGNED | longo | integer | 
| TINYINT | longo | byte | 
| TINYINT UNSIGNED | longo | curto | 
| BINARY | texto | binary | 
| BLOB | texto | binary | 
| CHAR | texto | texto | 
| ENUM | texto | palavra-chave | 
| LONGBLOB | texto | binary | 
| LONGTEXT | texto | texto | 
| MEDIUMBLOB | texto | binary | 
| MEDIUMTEXT | texto | texto | 
| SET | texto | palavra-chave | 
| TEXT | texto | texto | 
| TINYBLOB | texto | binary | 
| TINYTEXT | texto | texto | 
| VARBINARY | texto | binary | 
| VARCHAR | texto | texto | 
| DATE | long (em milissegundos epoch) | date | 
| DATETIME | long (em milissegundos epoch) | date | 
| TIME | long (em milissegundos epoch) | date | 
| TIMESTAMP | long (em milissegundos epoch) | date | 
| YEAR | long (em milissegundos epoch) | date | 
| GEOMETRY | text (em formato WKT) | geo\$1shape | 
| GEOMETRYCOLLECTION | text (em formato WKT) | geo\$1shape | 
| LINESTRING | text (em formato WKT) | geo\$1shape | 
| MULTILINESTRING | text (em formato WKT) | geo\$1shape | 
| MULTIPOINT | text (em formato WKT) | geo\$1shape | 
| MULTIPOLYGON | text (em formato WKT) | geo\$1shape | 
| POINT | text (em formato WKT) | geo\$1point ou geo\$1shape | 
| POLYGON | text (em formato WKT) | geo\$1shape | 
| JSON | texto | objeto | 

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 não funcionarem, 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-mysql-pipeline-limitations"></a>

Considere as seguintes limitações ao configurar um pipeline de OpenSearch ingestão para o Aurora MySQL:
+ A integração é compatível com apenas um banco de dados MySQL 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 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 MySQL 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 na configuração do OpenSearch coletor corretamente para poder updates/deletes sincronizar com OpenSearch.
+ Referências de chave estrangeira com ações de exclusão em cascata não são suportadas e podem resultar em inconsistência de dados entre o Aurora MySQL e. OpenSearch
+ Versões compatíveis: Aurora MySQL versão 3.05.2 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. | 

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