معرفی شرکت ها


aws-solutions-constructs.aws-dynamodbstreams-lambda-elasticsearch-kibana-2.9.0


Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر

توضیحات

CDK Constructs for Amazon Dynamodb streams to AWS Lambda to AWS Elasticsearch with Kibana integration
ویژگی مقدار
سیستم عامل -
نام فایل aws-solutions-constructs.aws-dynamodbstreams-lambda-elasticsearch-kibana-2.9.0
نام aws-solutions-constructs.aws-dynamodbstreams-lambda-elasticsearch-kibana
نسخه کتابخانه 2.9.0
نگهدارنده []
ایمیل نگهدارنده []
نویسنده Amazon Web Services
ایمیل نویسنده -
آدرس صفحه اصلی https://github.com/awslabs/aws-solutions-constructs.git
آدرس اینترنتی https://pypi.org/project/aws-solutions-constructs.aws-dynamodbstreams-lambda-elasticsearch-kibana/
مجوز Apache-2.0
# aws-dynamodbstreams-lambda-elasticsearch-kibana module <!--BEGIN STABILITY BANNER-->--- ![Stability: Experimental](https://img.shields.io/badge/stability-Experimental-important.svg?style=for-the-badge) > All classes are under active development and subject to non-backward compatible changes or removal in any > future version. These are not subject to the [Semantic Versioning](https://semver.org/) model. > This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package. --- <!--END STABILITY BANNER--> | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>| |:-------------|:-------------| <div style="height:8px"></div> | **Language** | **Package** | |:-------------|-----------------| |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_dynamodbstreams_elasticsearch_kibana`| |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-dynamodbstreams-lambda-elasticsearch-kibana`| |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.dynamodbstreamslambdaelasticsearchkibana`| ## Overview This AWS Solutions Construct implements Amazon DynamoDB table with stream, AWS Lambda function and Amazon Elasticsearch Service with the least privileged permissions. **Some cluster configurations (e.g VPC access) require the existence of the `AWSServiceRoleForAmazonElasticsearchService` Service-Linked Role in your account.** **You will need to create the service-linked role using the AWS CLI once in any account using this construct (it may have already been run to support other stacks):** ``` aws iam create-service-linked-role --aws-service-name es.amazonaws.com ``` Here is a minimal deployable pattern definition: Typescript ```python import { Construct } from 'constructs'; import { Stack, StackProps, Aws } from 'aws-cdk-lib'; import { DynamoDBStreamsToLambdaToElasticSearchAndKibana, DynamoDBStreamsToLambdaToElasticSearchAndKibanaProps } from '@aws-solutions-constructs/aws-dynamodbstreams-lambda-elasticsearch-kibana'; import * as lambda from 'aws-cdk-lib/aws-lambda'; const constructProps: DynamoDBStreamsToLambdaToElasticSearchAndKibanaProps = { lambdaFunctionProps: { code: lambda.Code.fromAsset(`lambda`), runtime: lambda.Runtime.NODEJS_16_X, handler: 'index.handler' }, domainName: 'test-domain', // TODO: Ensure the Cognito domain name is globally unique cognitoDomainName: 'globallyuniquedomain' + Aws.ACCOUNT_ID }; new DynamoDBStreamsToLambdaToElasticSearchAndKibana(this, 'test-dynamodbstreams-lambda-elasticsearch-kibana', constructProps); ``` Python ```Python from aws_solutions_constructs.aws_dynamodbstreams_lambda_elasticsearch_kibana import DynamoDBStreamsToLambdaToElasticSearchAndKibana, DynamoDBStreamsToLambdaToElasticSearchAndKibanaProps from aws_cdk import ( Stack, aws_lambda as _lambda, Aws, ) from constructs import Construct DynamoDBStreamsToLambdaToElasticSearchAndKibana( self, 'test-dynamodbstreams-lambda-elasticsearch-kibana', lambda_function_props=_lambda.FunctionProps( code=_lambda.Code.from_asset('lambda'), runtime=_lambda.Runtime.PYTHON_3_9, handler='index.handler' ), domain_name='test-domain', # TODO: Ensure the Cognito domain name is globally unique cognito_domain_name='globallyuniquedomain' + Aws.ACCOUNT_ID) ``` Java ```java import software.constructs.Construct; import software.amazon.awscdk.Aws; import software.amazon.awscdk.Stack; import software.amazon.awscdk.StackProps; import software.amazon.awscdk.services.lambda.*; import software.amazon.awscdk.services.lambda.Runtime; import software.amazon.awsconstructs.services.dynamodbstreamslambdaelasticsearchkibana.*; new DynamoDBStreamsToLambdaToElasticSearchAndKibana(this, "test-dynamodb-stream-lambda-elasticsearch-kibana", new DynamoDBStreamsToLambdaToElasticSearchAndKibanaProps.Builder() .lambdaFunctionProps(new FunctionProps.Builder() .runtime(Runtime.NODEJS_16_X) .code(Code.fromAsset("lambda")) .handler("index.handler") .build()) .domainName("test-domain") .cognitoDomainName("globallyuniquedomain" + Aws.ACCOUNT_ID) .build()); ``` ## Pattern Construct Props | **Name** | **Type** | **Description** | |:-------------|:----------------|-----------------| |existingLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Existing instance of Lambda Function object, providing both this and `lambdaFunctionProps` will cause an error.| |lambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|User provided props to override the default props for the Lambda function.| |dynamoTableProps?|[`dynamodb.TableProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_dynamodb.TableProps.html)|Optional user provided props to override the default props for DynamoDB Table| |existingTableInterface?|[`dynamodb.ITable`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_dynamodb.ITable.html)|Existing instance of DynamoDB table object or interface, providing both this and `dynamoTableProps` will cause an error.| |dynamoEventSourceProps?|[`aws-lambda-event-sources.DynamoEventSourceProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda_event_sources.DynamoEventSourceProps.html)|Optional user provided props to override the default props for DynamoDB Event Source| |esDomainProps?|[`elasticsearch.CfnDomainProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticsearch.CfnDomainProps.html)|Optional user provided props to override the default props for the Elasticsearch Service| |domainName|`string`|Domain name for the Cognito and the Elasticsearch Service| |cognitoDomainName?|`string`|Optional Cognito Domain Name, if provided it will be used for Cognito Domain, and domainName will be used for the Elasticsearch Domain.| |deploySqsDlqQueue?|`boolean`|Whether to deploy a SQS dead letter queue when a data record reaches the Maximum Retry Attempts or Maximum Record Age, its metadata like shard ID and stream ARN will be sent to an SQS queue.| |sqsDlqQueueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.QueueProps.html)|Optional user provided properties for the SQS dead letter queue| |createCloudWatchAlarms?|`boolean`|Whether to create recommended CloudWatch alarms| | existingVpc? | [`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|An existing VPC in which to deploy the construct. Providing both this and `vpcProps` is an error.| | deployVpc? |`boolean`|Whether to create a new VPC based on `vpcProps` into which to deploy this pattern. Setting this to true will deploy the minimal, most private VPC to run the pattern:<ul><li> One isolated subnet in each Availability Zone used by the CDK program</li><li>`enableDnsHostnames` and `enableDnsSupport` will both be set to true</li></ul>If this property is `true` then `existingVpc` cannot be specified. Defaults to `false`.| | vpcProps? |[`ec2.VpcProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.VpcProps.html)|Optional user-provided properties to override the default properties for the new VPC. `enableDnsHostnames`, `enableDnsSupport`, `natGateways` and `subnetConfiguration` are set by the Construct, so any values for those properties supplied here will be overrriden. If `deployVpc?` is not `true` then this property will be ignored. | ## Pattern Properties | **Name** | **Type** | **Description** | |:-------------|:----------------|-----------------| |dynamoTableInterface|[`dynamodb.ITable`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_dynamodb.ITable.html)|Returns an instance of dynamodb.ITable created by the construct| |dynamoTable?|[`dynamodb.Table`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_dynamodb.Table.html)|Returns an instance of dynamodb.Table created by the construct. IMPORTANT: If existingTableInterface was provided in Pattern Construct Props, this property will be `undefined`| |lambdaFunction|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Returns an instance of lambda.Function created by the construct| |userPool|[`cognito.UserPool`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cognito.UserPool.html)|Returns an instance of cognito.UserPool created by the construct| |userPoolClient|[`cognito.UserPoolClient`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cognito.UserPoolClient.html)|Returns an instance of cognito.UserPoolClient created by the construct| |identityPool|[`cognito.CfnIdentityPool`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cognito.CfnIdentityPool.html)|Returns an instance of cognito.CfnIdentityPool created by the construct| |elasticsearchDomain|[`elasticsearch.CfnDomain`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticsearch.CfnDomain.html)|Returns an instance of elasticsearch.CfnDomain created by the construct| |elasticsearchDomain|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.Role.html)|Returns an instance of iam.Role created by the construct for elasticsearch.CfnDomain| |cloudwatchAlarms?|[`cloudwatch.Alarm[]`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudwatch.Alarm.html)|Returns a list of cloudwatch.Alarm created by the construct| | vpc? |[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)| Returns an instance of the VPC created by the pattern, if `deployVpc?` is `true`, or `existingVpc?` is provided. | ## Lambda Function This pattern requires a lambda function that can post data into the Elasticsearch from DynamoDB stream. A sample function is provided [here](https://github.com/awslabs/aws-solutions-constructs/blob/master/source/patterns/%40aws-solutions-constructs/aws-dynamodbstreams-lambda-elasticsearch-kibana/test/lambda/index.js). ## Default settings Out of the box implementation of the Construct without any override will set the following defaults: ### Amazon DynamoDB Table * Set the billing mode for DynamoDB Table to On-Demand (Pay per request) * Enable server-side encryption for DynamoDB Table using AWS managed KMS Key * Creates a partition key called 'id' for DynamoDB Table * Retain the Table when deleting the CloudFormation stack * Enable continuous backups and point-in-time recovery ### AWS Lambda Function * Configure limited privilege access IAM role for Lambda function * Enable reusing connections with Keep-Alive for NodeJs Lambda function * Enable X-Ray Tracing * Enable Failure-Handling features like enable bisect on function Error, set defaults for Maximum Record Age (24 hours) & Maximum Retry Attempts (500) and deploy SQS dead-letter queue as destination on failure * Set Environment Variables * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions) ### Amazon Cognito * Set password policy for User Pools * Enforce the advanced security mode for User Pools ### Amazon Elasticsearch Service * Deploy best practices CloudWatch Alarms for the Elasticsearch Domain * Secure the Kibana dashboard access with Cognito User Pools * Enable server-side encryption for Elasticsearch Domain using AWS managed KMS Key * Enable node-to-node encryption for Elasticsearch Domain * Configure the cluster for the Amazon ES domain ## Architecture ![Architecture Diagram](architecture.png) --- © Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.


نیازمندی

مقدار نام
<3.0.0,>=2.76.0 aws-cdk-lib
==2.39.0 aws-solutions-constructs.aws-dynamodbstreams-lambda
==2.39.0 aws-solutions-constructs.aws-lambda-elasticsearch-kibana
==2.39.0 aws-solutions-constructs.core
<11.0.0,>=10.0.0 constructs
<2.0.0,>=1.80.0 jsii
>=0.0.3 publication
~=2.13.3 typeguard


زبان مورد نیاز

مقدار نام
~=3.7 Python


نحوه نصب


نصب پکیج whl aws-solutions-constructs.aws-dynamodbstreams-lambda-elasticsearch-kibana-2.9.0:

    pip install aws-solutions-constructs.aws-dynamodbstreams-lambda-elasticsearch-kibana-2.9.0.whl


نصب پکیج tar.gz aws-solutions-constructs.aws-dynamodbstreams-lambda-elasticsearch-kibana-2.9.0:

    pip install aws-solutions-constructs.aws-dynamodbstreams-lambda-elasticsearch-kibana-2.9.0.tar.gz