Amazon Chime SDK データレイクを作成する - Amazon Chime SDK

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

Amazon Chime SDK データレイクを作成する

Amazon Chime SDK 通話分析データレイクを使用すると、機械学習を活用したインサイトやメタデータを Amazon Kinesis Data Streams から Amazon S3 バケットにストリーミングできます。例えば、データレイクを使用して、記録用の URL にアクセスすることが可能です。データレイクを作成するには、Amazon Chime SDK コンソールから、または を使用してプログラムで AWS CloudFormation テンプレートのセットをデプロイします AWS CLI。データレイクを使用すると、Amazon Athena の AWS Glue データテーブルを参照して、通話メタデータと音声分析データをクエリできます。

前提条件

Amazon Chime SDK データレイクを作成するには、次の機能が必要です。

データレイクの用語と概念

データレイクの仕組みを理解するには、次の用語と概念を参考にしてください。

Amazon Kinesis Data Firehose

抽出、変換、ロード (ETL) サービス。これにより、ストリーミングデータをデータレイク、データストア、分析サービスに、確実にキャプチャ、変換、配信することが可能です。詳細については、「Amazon Kinesis Data Firehose とは何ですか?」を参照してください。

Amazon Athena

Amazon Athena は、標準 SQL を使用して Amazon S3 のデータを分析できるインタラクティブなクエリサービスです。Athena は、サーバーレスであるため、インフラストラクチャを管理する必要がなく、料金は実行したクエリに対してのみ発生します。Athena を利用するには、Amazon S3 内のデータを指定してスキーマを定義し、標準 SQL クエリを使用します。また、ワークグループでユーザーをグループ化し、クエリの実行時にユーザーがアクセスできるリソースを制御することもできます。ワークグループを使用すると、クエリの同時実行を管理して、さまざまなユーザーグループやワークロードによるクエリ実行に優先順位を付けることが可能です。

Glue Data Catalog

Amazon Athena のテーブルとデータベースには、基礎となるソースデータのスキーマを詳細に示すメタデータが格納されています。また、Athena では、データセットごとにテーブルが存在する必要があります。このテーブル内のメタデータによって Amazon S3 バケットの場所が判断されます。また、列名、データ型、テーブル名などのデータ構造も指定されます。データベースで保持されるのは、データセットのメタデータとスキーマ情報のみです。

複数のデータレイクを作成する

一意の Glue データベース名を指定して通話のインサイトを保存する場所を指定することで、複数のデータレイクを作成できます。特定のアカウントについて AWS 、複数の通話分析設定があり、それぞれに対応するデータレイクがあります。つまり、特定のユースケースにデータ分離を適用することが可能です。例えば、保持ポリシーや、データの保存方法に関するアクセスポリシーなどをカスタマイズできます。インサイト、録音データ、メタデータへのアクセスに、さまざまなセキュリティポリシーを適用することも可能です。

リージョン別に見たデータレイクの可用性

Amazon Chime SDK データレイクは、次のリージョンで利用できます。

リージョン

Glue テーブル

Amazon QuickSight

us-east-1

利用可能

利用可能

us-west-2

利用可能

利用可能

eu-central-1

利用可能

利用可能

データレイクのアーキテクチャ

データレイクのアーキテクチャを次の図に示します。図の数字は、次の各説明の番号に対応しています。

データレイクを使用するプログラムフローの図。

この図では、 AWS コンソールを使用してメディアインサイトパイプライン設定ワークフローから CloudFormation テンプレートをデプロイすると、次のデータが Amazon S3 バケットに流れます。

  1. Amazon Chime SDK 通話分析によって、顧客の Kinesis Data Stream に対しリアルタイムデータのストリーミングが開始されます。

  2. Amazon Kinesis Firehose では、128 MB まで蓄積される、または 60 秒が経過するまで (どちらか早い方が適用される)、このリアルタイムデータをバッファリングします。次の Firehose では、Glue データカタログの amazon_chime_sdk_call_analytics_firehose_schema を使用して、データを圧縮し、JSON レコードを Parquet 形式のファイルに変換します。

  3. Parquet ファイルは、パーティション形式で Amazon S3 バケットに格納されます。

  4. リアルタイムデータの他に、Amazon Transcribe Call Analytics の通話後概要データ .wav ファイル (設定で指定している場合、編集済みと未編集のファイル) と、通話録音の .wav ファイルも Amazon S3 バケットに送信されます。

  5. Amazon Athena と標準 SQL を使用して、Amazon S3 バケット内のデータをクエリすることができます。

  6. CloudFormation テンプレートは、Athena を介してこの通話後サマリーデータをクエリするための Glue データカタログも作成します。

  7. Amazon S3 バケット上のすべてのデータは、Amazon を使用して視覚化することもできます QuickSight。Amazon Athena を使用して Amazon S3 バケットとの接続 QuickSight を構築します。

Amazon Athena テーブルでは、次の機能を使用して、クエリのパフォーマンスを最適化します。

データのパーティション化

パーティショニングを行うと、テーブルが複数部分に分割され、日付、国、地域などの列の値に基づいて関連データがまとめられます。パーティションは仮想の列として機能します。この場合、 CloudFormation テンプレートはテーブルの作成時にパーティションを定義します。これにより、クエリごとにスキャンされるデータの量を減らし、パフォーマンスを向上させることができます。パーティションでフィルタリングして、クエリの際にスキャンするデータの量を制限することもできます。詳細については、「Amazon Athena ユーザーガイド」の「Athena でのデータのパーティション化」を参照してください。

次の例は、2023 年 1 月 1 日の日付を指定したパーティション構造を示しています。

  1. s3://example-bucket/amazon_chime_sdk_data_lake /serviceType=CallAnalytics/detailType={DETAIL_TYPE}/year=2023 /month=01/day=01/example-file.parquet
  2. DETAIL_TYPE には次のいずれかを指定します。

    1. CallAnalyticsMetadata

    2. TranscribeCallAnalytics

    3. TranscribeCallAnalyticsCategoryEvents

    4. Transcribe

    5. Recording

    6. VoiceAnalyticsStatus

    7. SpeakerSearchStatus

    8. VoiceToneAnalysisStatus

列指向データストアの生成を最適化する

Apache Parquet では、列単位の圧縮、データ型に基づく圧縮、述語プッシュダウンを使用してデータを保存します。圧縮率を上げたり、データブロックをスキップしたりすると、Amazon S3 バケットから読み取るバイト数が減少するため、クエリのパフォーマンスが向上すると共に、コストが削減されます。こうした最適化のために、Amazon Kinesis Data Firehose では、JSON からパーケットへのデータ変換が有効になっています。

パーティション射影

Athena のこの機能では、パーティションを日ごとに自動作成することで、日付ベースのクエリのパフォーマンスを向上させます。

データレイクをセットアップする

Amazon Chime SDK コンソールを使用して、次の手順を完了します。

  1. Amazon Chime SDK コンソール (https://console.aws.amazon.com/chime-sdk/home) を起動し、ナビゲーションペインの [通話分析][設定] を選択します。

  2. [ステップ 1] を完了して [次へ] を選択し、[ステップ 2] ページの [音声分析] チェックボックスを選択します。

  3. 出力詳細 で、履歴分析を実行するデータウェアハウス チェックボックスを選択し、 CloudFormation スタックのデプロイ リンクを選択します。

    コンソールのスタックのクイック作成ページにシステムから送信されます CloudFormation 。

  4. スタックの名前を入力し、次のパラメータを入力します。

    1. DataLakeTypeコール分析の作成 DataLakeを選択します。

    2. KinesisDataStreamName — 対象のストリームを選択します。通話分析ストリーミングに使用するストリームを指定する必要があります。

    3. S3BucketURI — Amazon S3 バケットを選択します。URI にはプレフィックス s3://bucket-name が必要です。

    4. GlueDatabaseName – 一意の AWS Glue データベース名を選択します。 AWS アカウント内の既存のデータベースは再利用できません。

  5. 確認のチェックボックスを選択し、[データレイクを作成] を選択します。データレイクの作成には、10 分かかります。

を使用したデータレイクのセットアップ AWS CLI

AWS CLI を使用して、 の create スタックを呼び CloudFormation出すアクセス許可を持つロールを作成します。次の手順に従って IAM ロールを作成しセットアップします。詳細については、「 ユーザーガイド」の「スタックの作成AWS CloudFormation 」を参照してください。

  1. AmazonChimeSdkCallAnalytics-Datalake-Provisioning-Role というロールを作成し、ロールを引き受けることができる信頼ポリシーをロール CloudFormation にアタッチします。

    1. 次のテンプレートを使用して IAM 信頼ポリシーを作成し、そのファイルを .json 形式で保存します。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
    2. aws iam create-role コマンドを実行し、信頼ポリシーをパラメータとして渡します。

      aws iam create-role \ --role-name AmazonChimeSdkCallAnalytics-Datalake-Provisioning-Role --assume-role-policy-document file://role-trust-policy.json
    3. レスポンスで返ったロール ARN を書き留めておきます。ロール ARN は次の手順で必要になります。

  2. CloudFormation スタックを作成するアクセス許可を持つポリシーを作成します。

    1. 次のテンプレートを使用して IAM ポリシーを作成し、そのファイルを .json 形式で保存します。create-policy を呼び出すときに、このファイルが必要となります。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "DeployCloudFormationStack", "Effect": "Allow", "Action": [ "cloudformation:CreateStack" ], "Resource": "*" } ] }
    2. aws iam create-policy を実行し、スタック作成のポリシーをパラメータとして渡します。

      aws iam create-policy --policy-name testCreateStackPolicy --policy-document file://create-cloudformation-stack-policy.json
    3. レスポンスで返ったロール ARN を書き留めておきます。ロール ARN は次の手順で必要になります。

  3. aws iam attach-role-policy ポリシーをロールにアタッチします。

    aws iam attach-role-policy --role-name {Role name created above} --policy-arn {Policy ARN created above}
  4. CloudFormation スタックを作成し、必要なパラメータ を入力しますaws cloudformation create-stack

    ParameterKey を使用して、各 のパラメータ値を指定します ParameterValue。

    aws cloudformation create-stack --capabilities CAPABILITY_NAMED_IAM --stack-name testDeploymentStack --template-url https://chime-sdk-assets.s3.amazonaws.com/public_templates/AmazonChimeSDKDataLake.yaml --parameters ParameterKey=S3BucketURI,ParameterValue={S3 URI} ParameterKey=DataLakeType,ParameterValue="Create call analytics datalake" ParameterKey=KinesisDataStreamName,ParameterValue={Name of Kinesis Data Stream} --role-arn {Role ARN created above}

データレイクのセットアップによって作成されるリソース

データレイク作成によって作成されるリソースを次の表に示します。

リソースタイプ

リソース名と説明

サービス名

AWS Glue データカタログデータベース

GlueDatabaseName – 通話インサイトと音声分析に属するすべての AWS Glue データテーブルを論理的にグループ化します。

通話分析、音声分析

AWS Glue データカタログテーブル

amazon_chime_sdk_call_analytics_firehose_schema — Kinesis Firehose に送られる通話分析と音声分析用の複合スキーマ。

通話分析、音声分析

call_analytics_metadata — 通話分析メタデータのスキーマ。SIPmetadataと が含まれます OneTimeMetadata。

コール分析

call_analytics_recording_metadata — 録音および音声エンハンスメントメタデータのスキーマ。 通話分析、音声分析

transcribe_call_analytics – TranscribeCallAnalytics ペイロードのスキーマutteranceEvent」

コール分析

transcribe_call_analytics_category_events – TranscribeCallAnalytics ペイロードのスキーマ "categoryEvent"

コール分析

transcribe_call_analytics_post_call – Transcribe の通話後分析概要ペイロードに使用するスキーマ。

コール分析

transcribe – Transcribe ペイロードのスキーマ。

コール分析

voice_analytics_status – 音声分析の準備状況を示すイベントのスキーマ。

音声分析

speaker_search_status – 識別一致に使用するスキーマ。

音声分析

voice_tone_analysis_status – ボイストーン分析イベントのスキーマ。

音声分析

Amazon Kinesis Data Firehose

AmazonChimeSDK-call-analytics-UUID – 通話分析用の Kinesis Data Firehose パイプデータ

通話分析、音声分析

Amazon Athena ワークグループ

GlueDatabaseName-AmazonChimeSDKDataAnalytics – クエリの実行時にアクセスできるリソースを制御する論理的なユーザーのグループ。

通話分析、音声分析