aws-dynamodb-stream-lambda-elasticsearch-kibana - Costrutti delle soluzioni AWS

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

aws-dynamodb-stream-lambda-elasticsearch-kibana

Tutte le classi sono in fase di sviluppo attivo e soggette a modifiche o rimozione non compatibili con le versioni precedenti in qualsiasi versione futura. Questi non sono soggetti allaIl controllo semantico delle versioniModello. Ciò significa che, mentre è possibile utilizzarli, potrebbe essere necessario aggiornare il codice sorgente quando si esegue l'aggiornamento a una versione più recente di questo pacchetto.

Nota: Per garantire la corretta funzionalità, i pacchetti AWS Solutions Constructs e i pacchetti AWS CDK nel progetto devono essere della stessa versione.

Linguaggio Pacchetto
Python
aws_solutions_constructs.aws_dynamodb_stream_lambda_elasticsearch_kibana
TypeScript
@aws-solutions-constructs/aws-dynamodb-stream-lambda-elasticsearch-kibana
Java
software.amazon.awsconstructs.services.dynamodbstreamlambdaelasticsearchkibana

Overview

Questo AWS Solutions Construct implementa la tabella Amazon DynamoDB con stream, una funzione AWS Lambda e un Amazon Elasticsearch Service con le autorizzazioni meno privilegiate.

Ecco una definizione di modello distribuibile minima in TypeScript:

import { DynamoDBStreamToLambdaToElasticSearchAndKibana, DynamoDBStreamToLambdaToElasticSearchAndKibanaProps } from '@aws-solutions-constructs/aws-dynamodb-stream-lambda-elasticsearch-kibana'; import { Aws } from "@aws-cdk/core"; const props: DynamoDBStreamToLambdaToElasticSearchAndKibanaProps = { lambdaFunctionProps: { runtime: lambda.Runtime.NODEJS_14_X, // This assumes a handler function in lib/lambda/index.js code: lambda.Code.fromAsset(`${__dirname}/lambda`), handler: 'index.handler' }, domainName: 'test-domain', // TODO: Ensure the Cognito domain name is globally unique cognitoDomainName: 'globallyuniquedomain' + Aws.ACCOUNT_ID; }; new DynamoDBStreamToLambdaToElasticSearchAndKibana(this, 'test-dynamodb-stream-lambda-elasticsearch-kibana', props);

Initializer

new DynamoDBStreamToLambdaToElasticSearchAndKibana(scope: Construct, id: string, props: DynamoDBStreamToLambdaToElasticSearchAndKibanaProps);

Parametri

Puntelli di costruzione modelli

Nome Tipo Descrizione
EsistenteLambdaobj? lambda.Function Istanza esistente dell'oggetto Function Lambda, fornendo sia questo chelambdaFunctionPropscauserà un errore.
LambdafunctionPunps? lambda.FunctionProps Proprietà facoltative fornite dall'utente per sovrascrivere le proprietà predefinite per la funzione Lambda. Ignorato se unexistingLambdaObjviene fornito.
DynamoTableProps? dynamodb.TableProps L'utente facoltativo ha fornito oggetti di scena per sovrascrivere gli oggetti di scena predefiniti per DynamoDB Table
TableObj esistente? dynamodb.Table Istanza esistente dell'oggetto tabella DynamoDB, fornendo sia questo chedynamoTablePropscauserà un errore.
DynamoEventSourceProps? aws-lambda-event-sources.DynamoEventSourceProps L'utente facoltativo ha fornito oggetti di scena per sovrascrivere gli oggetti di scena predefiniti per l'origine eventi DynamoDB
EsDomainProps? elasticsearch.CfnDomainProps L'utente facoltativo ha fornito oggetti di scena per sovrascrivere gli oggetti di scena predefiniti per il Amazon Elasticsearch Service
domainName string Nome di dominio per il servizio Cognito e Amazon Elasticsearch
CreateCloudWatchalarms boolean Indica se creare allarmi CloudWatch consigliati.

Proprietà pattern

Nome Tipo Descrizione
Cloudwatchalarms? cloudwatch.Alarm[] Restituisce un elenco di uno o più avvisi CloudWatch creati dal pattern.
DynamoTable dynamodb.Table Restituisce un'istanza della tabella DynamoDB creata dalla serie.
ElasticSearchDomain elasticsearch.CfnDomain Restituisce un'istanza del dominio Elasticsearch creato dal pattern.
IdentityPool cognito.CfnIdentityPool Restituisce un'istanza del pool di identità Cognito creato dal pattern.
LambdaFunction lambda.Function Restituisce un'istanza della funzione Lambda creata dal pattern.
userPool cognito.UserPool Restituisce un'istanza del pool di utenti Cognito creato dal pattern.
UserpoolClient cognito.UserPoolClient Restituisce un'istanza del client del pool di utenti Cognito creato dal pattern.

valida e completa

Questo modello richiede una funzione Lambda in grado di pubblicare dati nel servizio Elasticsearch dal flusso DynamoDB. Viene fornita una funzione di esempioQui: .

Impostazioni predefinite

L'implementazione predefinita di questo modello senza sostituzioni imposterà i seguenti valori predefiniti:

Tabella Amazon DynamoDB

  • Impostare la modalità di fatturazione per DynamoDB Table su richiesta (Paga per richiesta)

  • Abilitare la crittografia lato server per la tabella DynamoDB utilizzando la chiave AWS gestita

  • Crea una chiave di partizione chiamata 'id' per DynamoDB Table

  • Mantieni la tabella quando si elimina lo stack CloudFormation

  • Abilita backup continui e ripristino point-in-time

Funzione di AWS Lambda

  • Configurare il ruolo IAM di accesso limitato per la funzione Lambda

  • Abilita il riutilizzo delle connessioni con Keep-Alive per la funzione NodeJS Lambda

  • Abilita la traccia X-Ray

  • Abilita funzionalità di gestione degli errori: abilita la bisezione sulla funzione Errore; imposta la durata massima record predefinita (24 ore); imposta i tentativi di tentativi massimi predefiniti (500) e distribuisci la coda di lettere non recapitate SQS come destinazione in caso di errore

  • Impostare le variabili di ambiente:

    • AWS_NODEJS_CONNECTION_REUSE_ENABLED(per le funzioni Node 10.x e successive)

Amazon Cognito

  • Impostazione dei criteri delle password per i pool di utenti

  • Applica la modalità di protezione avanzata per i pool di utenti

Amazon Elasticsearch Service

  • Distribuisci le best practice CloudWatch Allarms per il dominio Elasticsearch

  • Proteggi l'accesso alla dashboard di Kibana con i pool di utenti di Cognito

  • Abilitare la crittografia lato server per Elasticsearch Domain utilizzando la chiave AWS gestita KMS

  • Abilita la crittografia da nodo a nodo per Elasticsearch Domain

  • Configurare il cluster per il dominio Amazon ES

Architecture

GitHub

Per visualizzare il codice per questo modello, creare/visualizzare problemi e richieste pull e altro ancora:
@aws -solutions-constructs/aws-dynamodb-stream-lambda-elasticsearch-kibana