RDS per PostgreSQL. - OpenSearch Servizio Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

RDS per PostgreSQL.

Completa i seguenti passaggi per configurare una pipeline di OpenSearch ingestione con Amazon RDS for RDS per PostgreSQL.

Prerequisiti RDS per PostgreSQL

Prima di creare la pipeline di OpenSearch Ingestion, effettuate le seguenti operazioni:

  1. Crea un gruppo di parametri DB personalizzato in Amazon RDS per configurare la replica logica.

    rds.logical_replication=1

    Per ulteriori informazioni, consulta Esecuzione della replica logica per Amazon RDS for PostgreSQL.

  2. Seleziona o crea un'istanza DB RDS per PostgreSQL e associa il gruppo di parametri creato nel passaggio 1 all'istanza DB.

  3. Configura l'autenticazione di nome utente e password sulla tua istanza Amazon RDS utilizzando la gestione delle password con AWS Secrets Manager Aurora e. Puoi anche creare una username/password combinazione creando un segreto di Secrets Manager.

  4. Se utilizzi la funzionalità di snapshot iniziale completa, crea un ruolo AWS KMS key e un ruolo IAM per l'esportazione dei dati da Amazon RDS ad Amazon S3.

    Il ruolo IAM deve avere la seguente politica di autorizzazione:

    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/*" ] } ] }

    Il ruolo dovrebbe inoltre avere le seguenti relazioni di fiducia:

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  5. Seleziona o crea un dominio OpenSearch di servizio o una raccolta OpenSearch Serverless. Per ulteriori informazioni, consulta Creazione di domini OpenSearch di servizio e Creazione di raccolte.

  6. Allega una politica basata sulle risorse al tuo dominio o una politica di accesso ai dati alla tua raccolta. Queste politiche di accesso consentono a OpenSearch Ingestion di scrivere dati dalla tua istanza DB Amazon RDS al tuo dominio o alla tua raccolta.

Fase 1: Configurare il ruolo della pipeline

Dopo aver configurato i prerequisiti della pipeline Amazon RDS, configura il ruolo della pipeline da utilizzare nella configurazione della pipeline. Aggiungi anche le seguenti autorizzazioni per il codice sorgente Amazon RDS al ruolo:

{ "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:*" ] } ] }

Fase 2: Creare la pipeline

Configura una pipeline di OpenSearch ingestione come la seguente, che specifica un'istanza RDS per PostgreSQL come origine.

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

Puoi utilizzare un blueprint Amazon RDS preconfigurato per creare questa pipeline. Per ulteriori informazioni, consulta Lavorare con i progetti.

Per utilizzare Amazon Aurora come sorgente, devi configurare l'accesso VPC per la pipeline. Il VPC scelto deve essere lo stesso VPC utilizzato dalla sorgente Amazon Aurora. Quindi scegli una o più sottoreti e uno o più gruppi di sicurezza VPC. Tieni presente che la pipeline richiede l'accesso di rete a un database Aurora MySQL, quindi dovresti anche verificare che il cluster Aurora sia configurato con un gruppo di sicurezza VPC che consenta il traffico in entrata dal gruppo di sicurezza VPC della pipeline alla porta del database. Per ulteriori informazioni, consulta Controllo dell'accesso con gruppi di sicurezza.

Se utilizzi il AWS Management Console per creare la tua pipeline, devi anche collegare la pipeline al tuo VPC per utilizzare Amazon Aurora come sorgente. Per fare ciò, trova la sezione Configurazione di rete, scegli Collega a VPC e scegli il tuo CIDR da una delle opzioni predefinite fornite, oppure seleziona la tua. È possibile utilizzare qualsiasi CIDR da uno spazio di indirizzi privato come definito nella Best Current Practice della RFC 1918.

Per fornire un CIDR personalizzato, seleziona Altro dal menu a discesa. Per evitare una collisione tra gli indirizzi IP tra OpenSearch Ingestion e Amazon RDS, assicurati che il CIDR VPC di Amazon Aurora sia diverso dal CIDR per Ingestion. OpenSearch

Per ulteriori informazioni, consulta Configurazione dell'accesso VPC per una pipeline.

Coerenza dei dati

La pipeline garantisce la coerenza dei dati effettuando continuamente polling o ricevendo modifiche dall'istanza Amazon RDS e aggiornando i documenti corrispondenti nell'indice. OpenSearch

OpenSearch Ingestion supporta il end-to-end riconoscimento per garantire la durabilità dei dati. Quando una pipeline legge istantanee o flussi, crea dinamicamente partizioni per l'elaborazione parallela. La pipeline contrassegna una partizione come completa quando riceve un riconoscimento dopo aver acquisito tutti i record nel dominio o nella raccolta. OpenSearch Se desideri importare in una raccolta di ricerca OpenSearch Serverless, puoi generare un ID di documento nella pipeline. Se desideri importare in una raccolta di serie temporali OpenSearch Serverless, tieni presente che la pipeline non genera un ID di documento, quindi devi document_id: "${getMetadata(\"primary_key\")}" ometterlo nella configurazione del pipeline sink.

Una pipeline OpenSearch di Ingestion mappa anche le azioni degli eventi in entrata nelle corrispondenti azioni di indicizzazione di massa per facilitare l'acquisizione dei documenti. Ciò mantiene i dati coerenti, in modo che ogni modifica dei dati in Amazon RDS venga riconciliata con le corrispondenti modifiche del documento. OpenSearch

Mappatura dei tipi di dati

OpenSearch La pipeline di ingestione mappa i tipi di dati PostgreSQL su rappresentazioni adatte all'uso da parte di domini o raccolte di servizi. OpenSearch Se non è definito alcun modello di mappatura OpenSearch, determina OpenSearch automaticamente i tipi di campo con una mappatura dinamica basata sul primo documento inviato. Puoi anche definire in modo esplicito i tipi di campo più adatti alle tue esigenze OpenSearch tramite un modello di mappatura.

La tabella seguente elenca i tipi di dati RDS per PostgreSQL e i tipi di campo corrispondenti. OpenSearch La colonna Tipo di OpenSearch campo predefinito mostra il tipo di campo corrispondente OpenSearch se non è definita alcuna mappatura esplicita. In questo caso, determina OpenSearch automaticamente i tipi di campo con mappatura dinamica. La colonna Tipo di OpenSearch campo consigliato è il tipo di campo consigliato corrispondente da specificare esplicitamente in un modello di mappatura. Questi tipi di campo sono più allineati ai tipi di dati di RDS per PostgreSQL e in genere possono abilitare migliori funzionalità di ricerca disponibili in. OpenSearch

Tipo di dati RDS per PostgreSQL Tipo OpenSearch di campo predefinito Tipo di OpenSearch campo consigliato
smallint Long short
integer Long integer
bigint Long Long
decimal text doppio o parola chiave
numerico [(p, s)] text doppio o parola chiave
real float float
double precision float double
piccolo seriale Long short
seriale Long integer
grande seriale Long Long
money oggetto oggetto
carattere variabile (n) text text
varchar(n) text text
carattere (n) text text
carattere (n) text text
bochar (n) text text
bpchar text text
text text text
enum text text
bytea text binary
timestamp [(p)] [senza fuso orario] long (in millisecondi di epoca) data
timestamp [(p)] con fuso orario long (in millisecondi di epoca) data
data long (in millisecondi epocali) data
ora [(p)] [senza fuso orario] long (in millisecondi di epoca) data
ora [(p)] con fuso orario lungo (in millisecondi di epoca) data
intervallo [campi] [(p)] testo (formato ISO86 01) text
booleano Booleano Booleano
point testo (in formato WKT) geo_shape
linea testo (in formato WKT) geo_shape
gamba testo (in formato WKT) geo_shape
scatola testo (in formato WKT) geo_shape
path testo (in formato WKT) geo_shape
poligono testo (in formato WKT) geo_shape
cerchio oggetto oggetto
sidro text text
inet text text
macadr text text
macaddr8 text text
bit (n) Long byte, corto, intero o lungo (a seconda del numero di bit)
bit variabile (n) Long byte, corto, intero o lungo (a seconda del numero di bit)
json oggetto oggetto
jsonb oggetto oggetto
percorso json text text

Ti consigliamo di configurare la dead-letter queue (DLQ) nella pipeline di Ingestion. OpenSearch Se hai configurato la coda, OpenSearch Service invia tutti i documenti non riusciti che non possono essere importati a causa di errori di mappatura dinamica sulla coda.

Nel caso in cui le mappature automatiche falliscano, puoi utilizzare template_type e template_content nella configurazione della pipeline per definire regole di mappatura esplicite. In alternativa, puoi creare modelli di mappatura direttamente nel tuo dominio di ricerca o nella tua raccolta prima di avviare la pipeline.

Limitazioni

Considerate le seguenti limitazioni quando impostate una pipeline di OpenSearch ingestione per RDS per PostgreSQL:

  • L'integrazione supporta solo un database PostgreSQL per pipeline.

  • Al momento l'integrazione non supporta l'inserimento di dati tra regioni; l'istanza e il OpenSearch dominio Amazon RDS devono trovarsi nello stesso posto. Regione AWS

  • L'integrazione attualmente non supporta l'ingestione di dati tra account; l'istanza Amazon RDS e la pipeline di OpenSearch Ingestion devono trovarsi nella stessa posizione. Account AWS

  • Assicurati che sull'istanza Amazon RDS sia abilitata l'autenticazione AWS Secrets Manager, che è l'unico meccanismo di autenticazione supportato.

  • La configurazione della pipeline esistente non può essere aggiornata per inserire dati da un database and/or diverso in una tabella diversa. Per aggiornare il nome del database e/o della tabella di una pipeline, è necessario arrestare la pipeline e riavviarla con una configurazione aggiornata oppure creare una nuova pipeline.

  • Le istruzioni DDL (Data Definition Language) in genere non sono supportate. La coerenza dei dati non verrà mantenuta se:

    • Le chiavi primarie vengono modificate (add/delete/rename).

    • Le tabelle vengono eliminate/troncate.

    • I nomi delle colonne o i tipi di dati vengono modificati.

  • Se le tabelle PostgreSQL da sincronizzare non hanno chiavi primarie definite, la coerenza dei dati non è garantita. Dovrai definire, personalizzare l'document_idopzione OpenSearch e configurare correttamente il sink per poterti sincronizzare con. updates/deletes OpenSearch

  • I cluster DB RDS Multi-AZ non sono supportati.

  • Versioni supportate: PostgreSQL 16 e versioni successive.

CloudWatch Allarmi consigliati

Le seguenti CloudWatch metriche sono consigliate per monitorare le prestazioni della pipeline di ingestione. Queste metriche possono aiutarti a identificare la quantità di dati elaborati dalle esportazioni, il numero di eventi elaborati dagli stream, gli errori nell'elaborazione delle esportazioni e degli eventi di flusso e il numero di documenti scritti nella destinazione. È possibile impostare CloudWatch allarmi per eseguire un'azione quando una di queste metriche supera un valore specificato per un determinato periodo di tempo.

Parametro Descrizione
pipeline-name.rds.credenziali modificate Questa metrica indica la frequenza con cui i segreti vengono ruotati. AWS
pipeline-name.rds. executorRefreshErrors Questa metrica indica gli errori nell'aggiornamento AWS dei segreti.
pipeline-name.rds. exportRecordsTotal Questa metrica indica il numero di record esportati da Amazon Aurora.
pipeline-name.rds. exportRecordsProcessed Questa metrica indica il numero di record elaborati dalla pipeline di OpenSearch ingestione.
pipeline-name.rds. exportRecordProcessingErrori Questa metrica indica il numero di errori di elaborazione in una pipeline di OpenSearch ingestione durante la lettura dei dati da un cluster Amazon Aurora.
pipeline-name.rds. exportRecordsSuccessTotale Questa metrica indica il numero totale di record di esportazione elaborati correttamente.
pipeline-name.rds. exportRecordsFailedTotale Questa metrica indica il numero totale di record di esportazione che non sono stati elaborati.
pipeline-name.RDS.byte ricevuti Questa metrica indica il numero totale di byte ricevuti da una pipeline di ingestione. OpenSearch
pipeline-name.rds.bytes processati Questa metrica indica il numero totale di byte elaborati da una pipeline di ingestione. OpenSearch
pipeline-name.rds. streamRecordsSuccessTotale Questa metrica indica il numero di record elaborati con successo dallo stream.
pipeline-name.rds. streamRecordsFailedTotale Questa metrica indica il numero totale di record non elaborati dallo stream.