Aurora 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à.

Aurora PostgreSQL

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

Prerequisiti Aurora PostgreSQL

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

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

    rds.logical_replication=1 aurora.enhanced_logical_replication=1 aurora.logical_replication_backup=0 aurora.logical_replication_globaldb=0
  2. Seleziona o crea un cluster Aurora PostgreSQL DB e associa il gruppo di parametri creato nel passaggio 1 al cluster DB.

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

  4. Se utilizzi la funzionalità completa di snapshot iniziale, crea un ruolo AWS KMS key e un ruolo IAM per l'esportazione dei dati da Amazon Aurora 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 dal tuo cluster Amazon Aurora DB al tuo dominio o alla tua raccolta.

Fase 1: Configurare il ruolo della pipeline

Dopo aver configurato i prerequisiti della pipeline di Amazon Aurora, configura il ruolo della pipeline da utilizzare nella configurazione della pipeline. Aggiungi anche le seguenti autorizzazioni per il codice sorgente Amazon Aurora 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": "AllowDescribeClusters", "Effect": "Allow", "Action": [ "rds:DescribeDBClusters" ], "Resource": [ "arn:aws:rds:region:account-id:cluster:DB-id" ] }, { "Sid": "AllowSnapshots", "Effect": "Allow", "Action": [ "rds:DescribeDBClusterSnapshots", "rds:CreateDBClusterSnapshot", "rds:AddTagsToResource" ], "Resource": [ "arn:aws:rds:region:account-id:cluster:DB-id", "arn:aws:rds:region:account-id:cluster-snapshot:DB-id*" ] }, { "Sid": "AllowExport", "Effect": "Allow", "Action": [ "rds:StartExportTask" ], "Resource": [ "arn:aws:rds:region:account-id:cluster:DB-id", "arn:aws:rds:region:account-id:cluster-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:*" ] } ] }

Passaggio 2: creare la pipeline

Configura una pipeline di OpenSearch ingestione come la seguente, che specifica il cluster Aurora PostgreSQL come origine.

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

Puoi usare un blueprint Amazon Aurora 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 negli indirizzi IP tra OpenSearch Ingestion e Amazon Aurora, 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 dal cluster Amazon Aurora 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 Aurora venga riconciliata con le corrispondenti modifiche del documento. OpenSearch

Mappatura dei tipi di dati

OpenSearch La pipeline di ingestione mappa i tipi di dati Aurora PostgreSQL su rappresentazioni adatte ai domini o alle raccolte di servizi da utilizzare. 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 Aurora 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 Aurora PostgreSQL e in genere possono abilitare migliori funzionalità di ricerca disponibili in. OpenSearch

Tipo di dati Aurora PostgreSQL OpenSearch Tipo 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 Aurora PostgreSQL:

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

  • L'integrazione attualmente non supporta l'ingestione di dati tra regioni; il cluster e il OpenSearch dominio Amazon Aurora devono trovarsi nello stesso posto. Regione AWS

  • L'integrazione attualmente non supporta l'ingestione di dati tra account; il cluster Amazon Aurora e la pipeline di importazione devono trovarsi OpenSearch nello stesso ambiente. Account AWS

  • Assicurati che nel cluster Amazon Aurora 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 Aurora 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 poterla sincronizzare con. updates/deletes OpenSearch

  • Versioni supportate: Aurora PostgreSQL versione 16.4 e 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.