非常に単純なDynamoDBテーブルにあるデータを視覚化するためのAWS中心のソリューション(可能な場合はサードパーティのものを回避する)を探しています。
AWS Quicksightを使用して他の多くのレポートとクライアントのダッシュボードを作成しているので、そこで視覚化を利用できるようにすることが目標です。
他の多くのものがS3、Athena、Redshift、RDSなどのようなものですが、DynamoDBがQuicksightのサポートされたソースではないことを知って非常に驚きました。
このためのソリューションを作成した経験はありますか?
DynamoDBテーブルを時々S3にダンプするジョブを作成し、S3またはAthenaとQuicksightの統合を使用してそれを読み取り/表示することを考えています。より多くのライブデータのためのシンプルなソリューションがあるといいですね。
QuicksightでDynamoDBのサポートが必要です!
私が見つけることができる最も簡単な方法は以下です:
1-DynamoDBテーブルをデータソースとして取得し、ドキュメントをグルーテーブルに書き込むグルークローラーを作成します。 (テーブルXとしましょう)
2-データソースとして「テーブルX」を取り、S3バケットに寄木細工の形式で書き込む接着ジョブを作成します。 (s3:// table-x-parquetsとしましょう)
3-データソースとして「s3:// table-x-parquets」を取り、そこから新しいグルーテーブルを作成するグルークローラーを作成します。 (テーブルYとしましょう)
これで、テーブルYでAthenaクエリを実行できるようになり、Quicksightでデータセットとして使用することもできます。
DynamoDBとQuickSightのネイティブ統合も見たいので、このスレッドも見ていきます。
しかし、あなたが望むものに近い少なくとも1つのオプションがあります。 DynamoDBテーブルでストリームを有効にし、DynamoDBに変更が加えられたときにLambda関数をトリガーするトリガーを設定できます。
その後、必要に応じて特定のDynamoDBイベントに対してのみアクションを実行し(「変更」、「挿入」、「削除」)、新しい/変更されたレコードをS3にダンプできます。これは、更新時にすぐにトリガーされるため、リアルタイムデータにかなり近いものになります。
過去に似たようなことをしましたが、データをS3にダンプする代わりに、別のDynamoDBテーブルを更新していました。代わりに例をS3に切り替えるのは非常に簡単です。下記参照。
const AWS = require('aws-sdk');
exports.handler = async (event, context, callback) => {
console.log("Event:", event);
const dynamo = new AWS.DynamoDB();
const customerResponse = await dynamo.scan({
TableName: 'Customers',
ProjectionExpression: 'CustomerId'
}).promise().catch(err => console.log(err));
console.log(customerResponse);
let customers = customerResponse.Items.map(item => item.CustomerId.S);
console.log(customers);
for(let i = 0; i < event.Records.length; i++)
{
if(event.Records[i].eventName === 'INSERT')
{
if(event.Records[i].dynamodb.NewImage)
{
console.log(event.Records[i].dynamodb.NewImage);
for(let j = 0; j < customers.length; j++)
{
await dynamo.putItem({
Item: {
...event.Records[i].dynamodb.NewImage,
CustomerId: { S: customers[j] }
},
TableName: 'Rules'
}).promise().catch(err => console.log(err));
}
}
}
}
}
2020年3月の時点で、Amazonは Athena DynamoDB Connector と呼ばれるベータ機能を提供しています。
残念ながら、それはベータ版/プレビューのみであり、Athenaで設定できますが、Quicksightでこれらの新しいAthenaカタログを使用する方法がわかりません。
この機能が一般提供されたら、Quicksightに簡単にインポートでき、良いニュースで回答を更新できることを願っています。
AWSがAthenaへの接続を自動化するためにベータ版で提供している多くの新しいデータソースがあります。
これらはコンソールから次のように設定できます。
これで、Athenaクエリエディターに移動して、作成したカタログを選択し、新しいカタログのdefault
Athenaデータベースの下に、リージョンのすべてのDyanmoDBテーブルのリストを表示できます。アテナの。
DynamoDBとQuicksightの統合を見たいです。 DynamoDBストリームは、レコードを更新する代わりにイベントを送信するため、S3へのダンプにDynamoDBストリームを使用することはできません。したがって、このS3バケットから読み取る場合、同じアイテムの2つのインスタンスが存在します。1つは更新前、もう1つは更新後です。
私が現在目にしている1つの解決策は、データパイプラインを使用してDynamoDBからS3バケットに定期的にデータをダンプし、このs3バケットでAthenaとQuicksightを使用することです。
2つ目の解決策は、dynamo dbストリームを使用して、ラムダ関数を使用するエラスティック検索にデータを送信することです。エラスティック検索には、かなりクールな視覚化を持つKibanaというプラグインがあります。データを2か所に保存しているため、明らかにコストが増加します。
また、各Elastic Searchドキュメントに必要に応じて最も詳細なデータが含まれるようにデータを変換してください。キバナの視覚化では、すべてを1つのドキュメントに集約します。