

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

# で Kinesis Data Streams と Firehose を使用して Amazon S3 に DynamoDB レコードを配信する AWS CDK
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk"></a>

*Amazon Web Services、Shashank Shrivastava、Daniel Matuki da Cunha*

## 概要
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-summary"></a>

このパターンは、Amazon Kinesis Data Streams および Amazon Kinesis Data Streams および Amazon Data Firehose を使用して Amazon DynamoDB から Amazon Simple Storage Service (Amazon S3) にレコードを配信するためのサンプルコードとアプリケーションを提供します。このパターンのアプローチでは [AWS Cloud Development Kit (AWS CDK) L3 コンストラクト](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)を使用し、Amazon Web Services (AWS) クラウド上のターゲット S3 バケットにデータが配信される AWS Lambda 前に でデータ変換を実行する方法の例を示します。

Kinesis Data Streams は、DynamoDB テーブルの項目レベルの変更を記録し、それらを必須の Kinesis Data Streams にレプリケートします。アプリケーションは Kinesis Data Streams にアクセスし、項目レベルの変更をほぼリアルタイムで表示できます。Kinesis Data Streams では、Firehose や Amazon Managed Service for Apache Flink など、他の Amazon Kinesis サービスにもアクセスできます。つまり、リアルタイムのダッシュボードの提供、アラートの生成、動的な料金設定、広告の実装、高度なデータ分析の実行を行うアプリケーションを構築できます。

このパターンは、データ統合のユースケースに使用できます。たとえば、輸送車両や産業機器は、DynamoDB テーブルに大量のデータを送信できます。その後、このデータを変換して Amazon S3 でホストされているデータレイクに保存できます。その後、Amazon Athena、Amazon Redshift Spectrum、Amazon Rekognition、 AWS Glueなどのサーバーレスサービスを使用して、データをクエリして処理し、潜在的な欠陥を予測できます。

## 前提条件と制限
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-prereqs"></a>

*前提条件*
+ アクティブ AWS アカウント。
+ AWS Command Line Interface (AWS CLI)、インストールおよび設定済み。詳細については、 AWS CLI ドキュメント[の「 の開始方法 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)」を参照してください。
+ Node.js (18.x\$1) と npm、インストールおよび設定済み。詳細については、[`npm`ドキュメントの Node.js と npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) のダウンロードとインストールを参照してください。
+ aws-cdk (2.x\$1) がインストールされ設定済み。詳細については、 AWS CDK ドキュメント[の「 の開始方法 AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)」を参照してください。
+ GitHub [aws-dynamodb-kinesisfirehose-s3-インジェスト](https://github.com/aws-samples/aws-dynamodb-kinesisfirehose-s3-ingestion/) リポジトリは、ローカルマシンにクローン化されて設定されています。
+ DynamoDB テーブルの既存のサンプルデータ。データは以下のフォーマットを使用する必要があります：`{"SourceDataId": {"S": "123"},"MessageData":{"S": "Hello World"}}`

## アーキテクチャ
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-architecture"></a>

次の図は、Kinesis データストリームと Firehose を使用して DynamoDB から Amazon S3 にレコードを配信するためのワークフローの例を示しています。

![\[Kinesis データストリームと Firehose を使用して DynamoDB から Amazon S3 にレコードを配信するためのワークフローの例。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/e2a9c412-312e-4900-9774-19a281c578e4/images/6e6df998-e6c2-4eaf-b263-ace752194689.png)


この図表は、次のワークフローを示しています:

1. データは Amazon API Gateway を DynamoDB のプロキシとして使用して取り込まれます。他のソースを使用して DynamoDB にデータを取り込むこともできます。 

1. アイテムレベルの変更は、Kinesis Data Streams でほぼリアルタイムで生成され、Amazon S3 に配信されます。

1. Kinesis データストリームは Firehose にレコードを送信し、変換と配信を行います。 

1. Lambda 関数は、レコードを DynamoDB レコード形式から、レコード項目の属性名と値のみを含む JSON 形式に変換します。

## ツール
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-tools"></a>

*AWS のサービス*
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) は、AWS クラウドインフラストラクチャをコードで定義して割り当てるのに役立つソフトウェア開発フレームワークです。
+ [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) は、 AWS CDK アプリの操作に役立つコマンドラインクラウド開発キットです。
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) は、コマンドラインシェルのコマンド AWS のサービス を通じて を操作するのに役立つオープンソースツールです。
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および 全体のライフサイクルを通じてリソースを管理するのに役立ちます AWS リージョン。

*コードリポジトリ*

このパターンのコードは、GitHub 内の「[aws-dynamodb-kinesisfirehose-s3-Ingestion](https://github.com/aws-samples/aws-dynamodb-kinesisfirehose-s3-ingestion/)」リポジトリで利用できます。

## エピック
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-epics"></a>

### サンプルコードのセットアップおよび設定
<a name="set-up-and-configure-the-sample-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SDK の依存関係をインストールします。 | ローカルマシンで、次のコマンドを実行して、`package.json`、`pattern/aws-dynamodb-kinesisstreams-s3`、および `sample-application` ディレクトリのファイルから依存関係をインストールします。<pre>cd <project_root>/pattern/aws-dynamodb-kinesisstreams-s3 </pre><pre>npm install && npm run build</pre><pre>cd <project_root>/sample-application/</pre><pre>npm install && npm run build</pre>  | アプリ開発者、AWS 全般 | 
| CloudFormation テンプレートを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk.html) | アプリケーション開発者、一般的な AWS、AWS DevOps | 

### リソースのデプロイ
<a name="deploy-the-resources"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リソースを確認してデプロイしてください。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk.html) | アプリケーション開発者、一般的な AWS、AWS DevOps | 

### DynamoDB テーブルにデータを取り込み、ソリューションをテストします。
<a name="ingest-data-into-the-dynamodb-table-to-test-the-solution"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| DynamoDB テーブルにサンプルデータを取り込みます。 | 次のコマンドを実行して、DynamoDB テーブルにリクエストを送信します AWS CLI。`aws dynamodb put-item --table-name <your_table_name> --item '{"<table_partition_key>": {"S": "<partition_key_ID>"},"MessageData":{"S": "<data>"}}'`例:`aws dynamodb put-item --table-name SourceData_table --item '{"SourceDataId": {"S": "123"},"MessageData":{"S": "Hello World"}}'`デフォルトでは、`put-item` オペレーションが成功しても、は出力として値を返しません。操作が失敗した場合はエラーを返します。データは DynamoDB に保存され、Kinesis データストリームと Firehose に送信されます。 DynamoDB テーブルにデータを追加するには、さまざまな方法が使用できます。詳細については、「DynamoDB ドキュメント」の「[テーブルへのデータのロード](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SampleData.LoadData.html)」を参照してください。 | アプリ開発者 | 
| S3 バケットに新しいオブジェクトが作成されたことを確認します。 | にサインイン AWS マネジメントコンソール し、S3 バケットをモニタリングして、送信したデータで新しいオブジェクトが作成されていることを確認します。 詳細については、「Amazon S3 ドキュメント」の「[GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)」を参照してください。 | アプリ開発者、AWS 全般 | 

### リソースをクリーンアップする
<a name="clean-up-resources"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リソースをクリーンアップします。 | `cdk destroy` コマンドを実行して、このパターンで使用されているリソースをすべて削除します。 | アプリ開発者、AWS 全般 | 

## 関連リソース
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-resources"></a>
+ [s3-static-site-stack.ts](https://github.com/awslabs/aws-solutions-constructs/blob/main/source/use_cases/aws-s3-static-website/lib/s3-static-site-stack.ts#L25) (GitHub リポジトリ)
+ [aws-apigateway-dynamodb](https://github.com/awslabs/aws-solutions-constructs/tree/main/source/patterns/%40aws-solutions-constructs/aws-apigateway-dynamodb) モジュール (GitHub リポジトリ)
+ [aws-kinesisstreams-kinesisfirehose-s3](https://github.com/awslabs/aws-solutions-constructs/tree/main/source/patterns/%40aws-solutions-constructs/aws-kinesisstreams-kinesisfirehose-s3) モジュール (GitHub リポジトリ)
+ 「[DynamoDB Streams の変更データキャプチャ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html)」 (「DynamoDB ドキュメント」)
+ 「[Kinesis Data Streams を使用して DynamoDB への変更をキャプチャする](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/kds.html)」 (「DynamoDB ドキュメント」)