

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# aws-ダイナモッド-ストリーム-ラムダ-弾性検索-キバナ
<a name="aws-dynamodb-stream-lambda-elasticsearch-kibana"></a>

![](https://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/experimental.png)


 すべてのクラスは積極的に開発されており、将来のバージョンでは下位互換性がない変更または削除の対象となります。これらは、[セマンティックバージョニング](https://semver.org/)モデル。つまり、これらのパッケージを使用するかもしれませんが、このパッケージの新しいバージョンにアップグレードするときにソースコードを更新する必要があるかもしれません。

**注意:** 正しく機能するためには、プロジェクト内の AWS ソリューション構築パッケージと AWS CDK パッケージが同じバージョンである必要があります。


|  **言語**  |  **パッケージ**  | 
| --- | --- | 
|  ![](https://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/python.png) Python  |  aws\_solutions\_constructs.aws\_dynamodb\_stream\_lambda\_elasticsearch\_kibana  | 
|  ![](https://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/typescript.png) TypeScript  |  @aws-solutions-constructs/aws-dynamodb-stream-lambda-elasticsearch-kibana  | 
|  ![](https://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/java.png) Java  |  software.amazon.awsconstructs.services.dynamodbstreamlambdaelasticsearchkibana  | 

## Overview
<a name="overview-7"></a>

 この AWS ソリューション構築物は、ストリームを含む Amazon DynamoDB テーブル、AWS Lambda 関数、および最も権限の低いアクセス許可を持つ Amazon Elasticsearch Service 実装します。

 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
<a name="initializer-7"></a>

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

 *パラメータ* 
+  scope[`Construct`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html) 
+  id`string` 
+  props[`DynamoDBStreamToLambdaToElasticSearchAndKibanaProps`](#pattern-construct-props-7) 

## パターン構成プロパティ
<a name="pattern-construct-props-7"></a>


|  **名前**  |  **タイプ**  |  **説明**  | 
| --- | --- | --- | 
|  ExistingLambdaObj？  |  [`lambda.Function`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html)  |  Lambda Functionオブジェクトの既存のインスタンス。これとlambdaFunctionPropsはエラーを発生させます。 | 
|  LambdaFunctionProps？  |  [`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.FunctionProps.html)  |  Lambda 関数のデフォルトプロパティを上書きするオプションのユーザー指定のプロパティ。Ignored if an existingLambdaObjが提供される。 | 
|  DynamoTablePropsかな？  |  [`dynamodb.TableProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-dynamodb.TableProps.html)  |  DynamoDB テーブルのデフォルトのプロップを上書きするオプションのユーザー提供の小道具  | 
|  ExistingTableObj？  |  [`dynamodb.Table`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-dynamodb.Table.html)  |  DynamoDB テーブルオブジェクトの既存のインスタンス。これとdynamoTablePropsはエラーを発生させます。 | 
|  DynamoEventSourceProps？  |  [`aws-lambda-event-sources.DynamoEventSourceProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda-event-sources.DynamoEventSourceProps.html)  |  DynamoDB イベントソースのデフォルトのプロップを上書きするオプションのユーザー提供の小道具  | 
|  ESDomainProps？  |  [`elasticsearch.CfnDomainProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-elasticsearch.CfnDomainProps.html)  |  Amazon Elasticsearch Service デフォルトの小道具を上書きするためのオプションのユーザー提供の小道具です  | 
|  domainName  |  string  |  Cognito および Amazon Elasticsearch Service ドメイン名  | 
|  クラウド・ワット・チャラームズ  |  boolean  |  推奨される CloudWatch アラームを作成するかどうか。 | 

## パターンプロパティ
<a name="pattern-properties-7"></a>


|  **名前**  |  **タイプ**  |  **説明**  | 
| --- | --- | --- | 
|  CloudWatchAlarms？  |  [`cloudwatch.Alarm[]`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cloudwatch.Alarm.html)  |  パターンによって作成された 1 つ以上の CloudWatch アラームのリストを返します。 | 
|  ダイナモテーブル  |  [`dynamodb.Table`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-dynamodb.Table.html)  |  パターンによって作成された DynamoDB テーブルのインスタンスを返します。 | 
|  弾性検索ドメイン  |  [`elasticsearch.CfnDomain`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-elasticsearch.CfnDomain.html)  |  パターンによって作成されたElasticsearchドメインのインスタンスを返します。 | 
|  IdentityPool  |  [`cognito.CfnIdentityPool`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.CfnIdentityPool.html)  |  パターンによって作成された Cognito ID プールのインスタンスを返します。 | 
|  LambdaFunction  |  [`lambda.Function`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html)  |  パターンによって作成された Lambda 関数のインスタンスを返します。 | 
|  UserPool  |  [`cognito.UserPool`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPool.html)  |  パターンによって作成された Cognito ユーザープールのインスタンスを返します。 | 
|  UserPoolCli  |  [`cognito.UserPoolClient`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPoolClient.html)  |  パターンによって作成された Cognito ユーザープールクライアントのインスタンスを返します。 | 

## Lambda 関数
<a name="lambda-function-7"></a>

このパターンには、DynamoDB ストリームから Elasticsearch サービスにデータを投稿できる Lambda 関数が必要です。サンプル関数が提供されています[ここ](https://github.com/awslabs/aws-solutions-constructs/blob/master/source/patterns/%40aws-solutions-constructs/aws-dynamodb-stream-lambda-elasticsearch-kibana/test/lambda/index.js)。

## デフォルト設定
<a name="default-settings-7"></a>

 オーバーライドなしでこのパターンをすぐに実装すると、次のデフォルトが設定されます。

### Amazon DynamoDB テーブル
<a name="amazon-dynamodb-table-1"></a>
+  DynamoDB テーブルの請求モードをオンデマンドに設定する（リクエストごとの支払い） 
+  AWS マネージド KMS キーを使用した DynamoDB テーブルのサーバー側の暗号化の有効化 
+  DynamoDB テーブルの 'id' という名前のパーティションキーを作成します。
+  CloudFormation スタックを削除するときにテーブルを保持する 
+  継続的なバックアップとポイントインタイムリカバリを有効にします 

### AWS Lambda 関数
<a name="aws-lambda-function-3"></a>
+  Lambda 関数の制限付き特権アクセスの IAM ロールを設定する 
+  NodeJS Lambda 関数のキープアライブを使用して接続を再利用できるようにする 
+  X-Ray トレースを有効にする
+  障害処理機能の有効化:関数エラーの bisect の有効化、デフォルトの最大レコード有効期間 (24 時間) の設定、デフォルトの最大再試行回数 (500) の設定、障害発生時の宛先として SQS デッドレターキューのデプロイ
+  環境変数の設定:
  +  `AWS_NODEJS_CONNECTION_REUSE_ENABLED`（ノード10.x以上の機能の場合）

### Amazon Cognito
<a name="amazon-cognito-1"></a>
+  UserPoolのパスワードポリシーを設定する 
+  ユーザープールの高度なセキュリティモードを適用する 

### Amazon Elasticsearch Service
<a name="amazon-elasticsearch-service"></a>
+  Elasticsearch ドメイン用のベストプラクティス CloudWatch アラームのデプロイ 
+  Cognito ユーザープールを使用した Kibana ダッシュボードのアクセスの保護 
+  AWS マネージド KMS キーを使用した Elasticsearch ドメインのサーバー側の暗号化の有効化 
+  Elasticsearchドメインのノード間の暗号化を有効にする 
+  Amazon ES ドメインのクラスターを設定する 

## Architecture
<a name="architecture-7"></a>

![](https://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/aws-dynamodb-stream-lambda-elasticsearch-kibana.png)


## GitHub
<a name="github-7"></a>


<table>
<thead>
  <tr><th colspan="2"> <b>このパターンのコードを表示するには、問題を作成/表示し、プル要求などを行います。</b> </th></tr>
</thead>
<tbody>
  <tr><td> <img src="https://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/GitHub-Mark-32px.png" alt="" /> </td><td> <a href="https://github.com/awslabs/aws-solutions-constructs/tree/master/source/patterns/%40aws-solutions-constructs/aws-dynamodb-stream-lambda-elasticsearch-kibana">@aws-ソリューション-構築/aws-dynamodb-stream-lambda-elasticsearch-kibana</a> </td></tr>
</tbody>
</table>
