Amazon Web Services ブログ

サーバーレスアーキテクチャで実現するAmazon Connect 通話記録アーカイブコスト最適化

この記事は Serverless architecture for optimizing Amazon Connect call-recording archival costs (記事公開日: 2022 年 6 月 24 日) を翻訳したものです。

この記事はコンタクトセンターの通話記録格納ストレージコストを最適化するサーバーレスソリューションを解説します。このソリューションは、通話記録ファイルのスケジューリング、ストレージ階層化、およびリサンプリングを自動化し、即時にコスト削減を実現します。このソリューションは、 AWS Step FunctionsAmazon Simple Queue Service (Amazon SQS)、およびAWS Lambda を使用する非同期アーキテクチャで実現します。

Amazon Connect は、コンプライアンス遵守のために必要な通話記録をオムニチャネルクラウドコンタクトセンターに保持する機能を提供します。さらに、Contact Lens for Amazon ConnectAWS Contact Center Intelligence (CCI) パートナーを利用して、通話記録を分析し、実用的なインサイトを獲得することができます。 お客様がコンプライアンス保持要件(多くの場合 6 年以上保管)を満たすために、通話記録に必要なストレージが急速に増加する可能性があります。結果的に数百テラバイトの長期保管になることもあります。

ソリューション概要

エージェントが顧客との通話を完了すると、Amazon Connect は通話記録を Amazon Simple Storage Solution (Amazon S3) バケットに送信します。通話記録ファイルは、日付とコンタクト ID プレフィックスが付与され、.WAV 形式で保存されます。さらに、ビットレート 256 kb/s、pcm_s16le、8000 Hz、2 チャネル、256 kb/sによってエンコードされます。通話記録ファイルは高品質な機械学習分析などの処理を実現するために、約 2Mb/分に最適化されます (図 1 参照)。

図1. 通話記録のバッチリサンプリング非同期アークテクチャ

通話記録が Amazon S3 に送信されると、エージェント及び品質監査者向けの分析レポートを生成するために、ダウンストリーム後処理が実行されます。ダウンストリーム後処理には、レポートを生成する及び実用的なイベントをトリガーするための文字起こし、サービス品質メトリクス、およびセンチメント分析を提供するサービスが含まれます。

ダウンストリーム後処理は数分以内に完了することが多いですが、アプリケーション処理がリトライになることによってもっと時間かかることもあります。オーディオリサンプリング処理中はオーディオファイルの品質が劣化するため、リサンプリング処理をダウンストリーム処理完了まで保留する必要があります。ダウンストリーム処理済みの通話記録は数日後にはアクセスされることはめったになく、エージェントや通話品質監査者がアクセスする頻度もごくわずかです。そのため、通話記録のリサンプリングを数日後に実施した方がリサンプリング中の品質劣化を最小限に止めることができます。さらに長期保管する低コストのAmazon S3 ストレージ階層へ移動することでコスト最適化につながります。

図 2 では、複数のAWS サービス連携により、コンタクトセンターの通話記録保管にエンドツーエンドのコスト最適化ソリューションを実現するアーキテクチャを示しています。

図2. 複数サービスの連携により実現する通話記録コスト最適化ソリューション

Amazon EventBridge スケジュールルールトリガーによって、過去 7 日間のすべての通話記録に対してバッチ・リサンプリング・プロセスを実行するAWS Step Functionsワークフローが起動されます。

最初のStep Functionsタスクでは、Lambda 関数タスクが ListObjectsV2 API を使用して S3 バケットを反復処理し、7 日前の日付プレフィックスが付いている通話記録 (反復ごとに 1000 オブジェクト) から順次取得します。

次のタスクでは、Amazon SQS キューに通話記録オブジェクトを書き込む Lambda 関数を呼び出します。そして、オーディオ変換 Lambda 関数が Lambda イベントソースマッピング統合を介して Amazon SQS キューからイベントを受信します。一連のLambda 関数が呼び出される度に、Amazon S3 からオリジナル通話記録オブジェクトをダウンロードし、ffmpegを使用して.WAV 形式の通話記録ファイルをリサンプリングし、”converted=True” タグを付けます。

最後に、オーディオ変換 Lambda 関数がリサンプリングされた通話記録ファイルを Amazon S3 にアップロードしオリジナル通話記録を上書きします。そして、リサンプリングされた通話記録ファイルはS3 Glacier Instant Retrieval コスト最適化ストレージクラスに自動移動されます。S3 Glacier Instant Retrieval は、アクセスされることがほとんどなく、通話記録再生などのためにミリ秒単位の取得が必要な、長期間有効なデータ保管用に最低コストのストレージを提供する新しいアーカイブストレージクラスです。Amazon Connect はデフォルトで S3バージョニングを有効にして通話記録を保存し、オリジナルファイルをバージョン管理します。また、ライフサイクルポリシーを使用して、S3バージョニング有効なバケットからオブジェクトバージョンを削除することによって、オリジナルバージョンを完全に削除できます。これにより、オリジナル通話記録のストレージが最小限に抑えられます。

このソリューションは、AWS Step Functionsワークフローのロギング及びSQSデッドレターキューを使用して、通話記録のリサンプリング処理で発生したエラーなどの処理失敗をキャッチします。Step Functionsタスクは、AWS SDKとSQSサービス統合を使用して Amazon SQS キューを監視し、キューが空になったことを検知することによってワークフローを終了します。図3にはAWS Step Functionsステートマシンの詳細フローを示しています。

図3. AWS Step Functionsステートマシンの詳細フロー

リサンプリング

表1は、通話記録ファイルのデフォルトフォーマットとリサンプリング後のフォーマットを示しています。

表1.デフォルト及びリサンプリング後の通話記録オーディオフォーマット

料金見積もり

ソリューションで使用される主なサービスの料金については、以下を参照してください。

このソリューションで発生するコストは、使用量に応じて変化し、AWS 無料利用枠の対象となります。AWS 無料利用枠が消費された後のコストは 1000 分間の通話記録あたり約 0.11 USD になります。S3 標準クラスは 0.023 USD/GB(月単位) からスタートします。Amazon S3 Glacier Instant Retrieval はデータ保存は0.004 USD/GB(月単位)かかり、データ取り出しは 0.003 USD/GB かかります。6年間のコンプライアンス保持期間中、スケジュールベースのリサンプリング及び低コストストレージへの階層化が大幅なコスト削減につながります。

表 2 に示されている 6 年間の具体例では、S3 標準ストレージ使用の場合は、300万分/月の通話記録の保管で6年間合計約 356,664 USD かかりますが、オーディオのリサンプリング実施及び S3 Glacier Instant Retrieval への階層化により、6 年間のコストが約 41,838 USD に削減されます。

表2. 6年間のコスト削減シナリオ(300万分/月)(単位:米ドル)

*1:300万分/月*12ヶ月=36,000,000分

PCA コストを調べるには、AWS Cost Explorer を使用するか、AWS 請求ダッシュボード請求書をクリックし、サービス別の月間支出を確認できます。

ソリューションをデプロイする

このソリューションのコードとドキュメントは、Git リポジトリのクローンを作成することで入手でき、AWS Cloud Development Kit (AWS CDK)を使用してデプロイできます。

Bash
# clone repository
git clone https://github.com/aws-samples/amazon-connect-call-recording-cost-optimizer.git
# navigate the project directory
cd amazon-connect-call-recording-cost-optimizer

デプロイ手順としては、まずcdk.context.jsonを編集し、bucket_name などの環境変数を調整します。次に、AWS CDK 使用に必要な前提条件をインストールし、最後にAWS CDKを使ってソリューションをデプロイします。

:# ensure you are in the root directory of the repository
./cdk-deploy.sh

デプロイ完了すると、num_days_age の設定値通りにEventBridge スケジュールルールが実行されるため、自動的にリサンプリングソリューションの挙動が検証されます。また、{"specific_date": "01/01/2022"} のように任意の日付を指定しAWS Step Functions を手動で実行することもできます。

AWS CDK デプロイによって、次のリソースが作成されます。

  • AWS Step Functions
  • AWS Lambda 関数
  • Amazon SQS キュー
  • Amazon EventBridge ルール

このソリューションは、S3 Glacier Instant Retrieval へのストレージ自動階層化が実施されます。さらに、Amazon S3 ライフサイクルを手動設定し、リサンプリング後の通話記録を他の低コスト Amazon S3 ストレージクラスにも移動できます。

クリーンアップ

ソリューション検証終了後は、下記のコマンドを実施してリソースをクリーンアップします。

cdk destroy

このコマンドは、AWS CDK によってデプロイされたリソースを削除します。ただし、S3 バケットに格納されている通話記録やCloudWatch ロググループは保持されます。

まとめ

この通話記録リサンプリングソリューションは、ストレージの自動階層化、コスト最適化及びスケーラブルなアーキテクチャを提供し、コンプライアンス通話記録を長期保管するためのアーカイブストレージコストを削減します。

翻訳は Partner Success Solutions Architect 銭 敏娟が担当しました。