データと洞察をほぼリアルタイムで配信することで、企業は顧客のニーズに迅速に対応できます。 リアルタイム データは、ソーシャル メディア、IoT デバイス、インフラストラクチャの監視、コール センターの監視など、さまざまなソースから取得できます。 複数のソースから取り込まれるデータの幅と深さのため、企業は顧客のプライバシーを保護し、機密データがエンド システムからアクセスされないようにするためのソリューションを探しています。 以前は、誤検出や欠落データにフラグを立てる可能性のある個人識別情報 (PII) ルール エンジンに依存するか、ストリーミング データ内の PII を識別するためにカスタム機械学習 (ML) モデルを構築して維持する必要がありました。 また、これらのエンジンやモデルをサポートするために必要なインフラストラクチャを実装して維持する必要もありました。
このプロセスを合理化し、コストを削減するために、次を使用できます。 Amazon Comprehendは、ML を使用して非構造化テキスト内の人、場所、感情、トピックなどの洞察と関係を見つける自然言語処理 (NLP) サービスです。 Amazon Comprehend ML 機能を使用して、顧客の E メール、サポートチケット、製品レビュー、ソーシャルメディアなどの PII を検出して編集できるようになりました。 ML の経験は必要ありません。 たとえば、ドキュメントのインデックスを作成する前に、サポート チケットとナレッジ記事を分析して PII エンティティを検出し、テキストを編集できます。 その後、ドキュメントは PII エンティティから解放され、ユーザーはデータを使用できます。 PII エンティティを秘匿化することで、顧客のプライバシーを保護し、地域の法律や規制に準拠することができます。
この投稿では、Amazon Comprehend をストリーミング アーキテクチャに実装して、PII エンティティをほぼリアルタイムで編集する方法を学びます。 Amazon Kinesis データ ファイアホース AWSラムダ.
この投稿では、Kinesis Data Firehose を使用してストリーミング アーキテクチャに取り込まれた選択フィールドからのデータを編集することに焦点を当てています。そこでは、エンドユーザーまたはダウンストリーム アプリケーションによる消費のために、データの追加の派生コピーを作成、保存、および維持します。 使用している場合 Amazon Kinesisデータストリーム または、PII リダクション以外の追加のユース ケースがある場合は、次を参照してください。 Amazon Kinesis Data Analytics、Amazon Translate、Amazon ComprehendのSQL関数を使用して、ストリーミングデータを翻訳、編集、分析します、使用方法を示します Amazon Kinesis データ分析スタジオ を搭載 アパッチゼッペリン & ApacheFlink ストリーミング データ内のテキスト フィールドをインタラクティブに分析、翻訳、編集します。
ソリューションの概要
次の図は、ストリーミング データの PII リダクションをリアルタイムで実行するためのアーキテクチャの例を示しています。 Amazon シンプル ストレージ サービス (Amazon S3)、 Kinesis DataFirehoseデータ変換, Amazon Comprehend, AWSラムダ. さらに、 AWS SDK for Python(Boto3) Lambda 関数用。 図に示されているように、S3 RAW バケットには編集されていないデータが含まれており、S3 編集済みバケットには Amazon Comprehend を使用した後に編集されたデータが含まれています。 DetectPiiEntities
Lambda 関数内の API。
関係する費用
Kinesis Data Firehose、Amazon S3、および Lambda のコストに加えて、このソリューションには Amazon Comprehend からの使用コストが発生します。 支払う金額は、PII を含むレコードの合計数と Lambda 関数によって処理される文字の要素です。 詳細については、次を参照してください。 Amazon Kinesis Data Firehose の料金, Amazon Comprehendの料金, AWSLambdaの価格.
例として、10,000 件のログ レコードがあり、PII を秘匿化するキー値が 500 文字であるとします。 10,000 件のログ レコードのうち、50 件に PII が含まれていると特定されました。 費用の詳細は次のとおりです。
PII コストを含む:
- 各キー値のサイズ = 500 文字 (1 単位 = 100 文字)
- レコードあたりのユニット数 (100 文字) (最小は 3 ユニット) = 5
- 合計ユニット数= 10,000(レコード)x 5(レコードあたりのユニット数)x 1(レコードあたりのAmazon Comprehendリクエスト)= 50,000
- ユニットあたりの価格= $ 0.000002
- ContainsPiiEntities API を使用して PII でログ レコードを識別するための総コスト = 0.1 USD [50,000 ユニット x 0.000002 USD]
PII コストの編集:
- PII を含む合計ユニット = 50 (レコード) x 5 (レコードあたりのユニット) x 1 (レコードあたりの Amazon Comprehend リクエスト) = 250
- ユニットあたりの価格= $ 0.0001
- DetectPiiEntities API を使用して PII の場所を特定するための総コスト = [ユニット数] x [ユニットあたりのコスト] = 250 x $0.0001 = $0.025
識別と編集の総コスト:
- 総コスト: $0.1 (フィールドに PII が含まれている場合の検証) + $0.025 (PII を含むフィールドの編集) = $0.125
AWSCloudFormationを使用してソリューションをデプロイする
この投稿では、 AWS CloudFormation ストリーミング データのリダクション template、繰り返し可能な展開を可能にする実装の完全な詳細を提供します。 デプロイ時に、このテンプレートは 3 つの SXNUMX バケットを作成します。XNUMX つは Amazon Kinesis Data Generator (KDG) から取り込まれた生のサンプル データを保存するためのもので、もう XNUMX つはリダクションされたデータを保存するためのものです。 さらに、Kinesis Data Firehose 配信ストリームを作成します。 DirectPUT
入力として、Amazon Comprehend を呼び出す Lambda 関数 含まれているPiiエンティティ & PiiEntities の検出 PII データを識別して編集するための API。 Lambda 関数は、環境変数へのユーザー入力に依存して、PII について検査する必要があるキー値を決定します。
このソリューションの Lambda 関数では、ペイロード サイズが 100 KB に制限されています。 テキストが 100 KB を超えるペイロードが提供された場合、Lambda 関数はそれをスキップします。
ソリューションを展開するには、次の手順を実行します。
- 米国東部 (バージニア北部) で CloudFormation スタックを起動する
us-east-1
: - スタック名を入力し、他のパラメーターはデフォルトのままにします
- 選択 AWS CloudFormationがカスタム名でIAMリソースを作成する可能性があることを認めます。
- 選択する スタックを作成.
リソースを手動でデプロイする
AWS CloudFormation を使用する代わりに手動でアーキテクチャを構築する場合は、このセクションの手順を完了してください。
S3バケットを作成します
次の手順で S3 バケットを作成します。
- Amazon S3コンソールで、 バケット ナビゲーションペインに表示されます。
- 選択する バケットを作成する.
- 生データ用に XNUMX つのバケットを作成し、秘匿化されたデータ用に XNUMX つのバケットを作成します。
- 作成したバケットの名前をメモします。
Lambda関数を作成する
Lambda 関数を作成してデプロイするには、次の手順を実行します。
- Lambdaコンソールで、 関数を作成する.
- 選択する 最初から作成者.
- 関数名、 入る
AmazonComprehendPII-Redact
. - ランタイム、選択する Pythonの3.9.
- アーキテクチャ選択 x86_64.
- 実行の役割選択 Lambda アクセス許可を持つ新しいロールを作成する.
- 関数を作成したら、次のコードを入力します。
- 選択する 配備します.
- ナビゲーションペインで、 コンフィギュレーション。
- MFAデバイスに移動する 環境変数.
- 選択する 編集.
- キー、 入る
keys
. - 値、PII をリダクションするキー値をコンマとスペースで区切って入力します。 たとえば、次のように入力します。
Tweet1
,Tweet2
この投稿の次のセクションで提供されるサンプル テスト データを使用している場合。 - 選択する Save.
- MFAデバイスに移動する 一般的な設定.
- 選択する 編集.
- の値を変更する タイムアウト を1分に設定します。
- 選択する Save.
- MFAデバイスに移動する 権限.
- 下のロール名を選択します 実行の役割.
にリダイレクトされます AWS IDおよびアクセス管理 (IAM) コンソール。 - 権限を追加、選択する ポリシーを添付.
- 入力します
Comprehend
検索バーに移動し、ポリシーを選択しますComprehendFullAccess
. - 選択する ポリシーを添付.
Firehose 配信ストリームを作成する
Firehose 配信ストリームを作成するには、次の手順を実行します。
- Kinesis Data Firehoseコンソールで、 配信ストリームを作成する.
- ソース選択 ダイレクトプット.
- 開催場所選択 アマゾンS3.
- 配信ストリーム名、 入る
ComprehendRealTimeBlog
. - ソース レコードを AWS Lambda で変換する選択 使用可能.
- AWS Lambda関数、作成した関数の ARN を入力するか、関数を参照します
AmazonComprehendPII-Redact
. - バッファサイズ、値を 1 MB に設定します。
- バッファ間隔、60 秒のままにします。
- 宛先設定で、リダクションされたデータ用に作成した S3 バケットを選択します。
- バックアップ設定で、生レコード用に作成した S3 バケットを選択します。
- 許可、IAM ロールを作成または更新するか、適切なアクセス許可を持つ既存のロールを選択します。
- 選択する 配信ストリームを作成する.
Kinesis Data Generator を使用してストリーミング データ ソリューションをデプロイする
Kinesis Data Generator (KDG) を使用してサンプルデータを Kinesis Data Firehose に取り込み、ソリューションをテストできます。 このプロセスを簡素化するために、Lambda 関数と CloudFormation テンプレートを提供して、 アマゾンコグニート ユーザーに割り当て、KDG を使用するための適切な権限を割り当てます。
- ソフトウェア設定ページで、下図のように Amazon Kinesis Data Generator ページ、選択する CloudFormationを使用してCognitoユーザーを作成するスタックを作成するために、AWS CloudFormation コンソールにリダイレクトされます。
- KDG へのログインに使用するユーザーのユーザー名とパスワードを指定します。
- 他の設定はデフォルトのままにして、スタックを作成します。
- ソフトウェア設定ページで、下図のように 出力 タブで、KDG UI リンクを選択します。
- ユーザー名とパスワードを入力してログインします。
テスト レコードを送信し、Amazon S3 でリダクションを検証する
ソリューションをテストするには、次の手順を実行します。
- 前の手順で作成した KDG URL にログインします。
- AWS CloudFormation スタックがデプロイされたリージョンを選択します。
- ストリーム/配信ストリーム、作成した配信ストリームを選択します (テンプレートを使用した場合、その形式は
accountnumber-awscomprehend-blog
). - 他の設定はデフォルトのままにします。
- レコード テンプレートについては、独自のテストを作成するか、次のテンプレートを使用できます。以下に提供されているサンプル データをテストに使用している場合は、
AmazonComprehendPII-Redact
ラムダ関数Tweet1
,Tweet2
. CloudFormation 経由でデプロイされた場合は、環境変数を次のように更新します。Tweet1
,Tweet2
作成された Lambda 関数内。 サンプル テスト データは次のとおりです。 - 選択する データを送る、レコードがストリームに送信されるまで数秒待ちます。
- 数秒後、KDG ジェネレーターを停止し、配信されたファイルの S3 バケットを確認します。
以下は、生の S3 バケット内の生データの例です。
以下は、リダクションされた S3 バケット内のリダクションされたデータの例です。
秘匿化されたメッセージから機密情報が削除されているため、このデータをエンド システムと共有できるという確信が持てます。
掃除
このソリューションの実験が終了したら、AWS CloudFormation コンソールを使用してリソースをクリーンアップし、この例でデプロイされたすべてのリソースを削除します。 手動の手順に従った場合は、XNUMX つのバケットを手動で削除する必要があります。 AmazonComprehendPII-Redact
機能、 ComprehendRealTimeBlog
ストリーム、のログ グループ ComprehendRealTimeBlog
ストリーム、および作成されたすべての IAM ロール。
まとめ
この投稿では、PII リダクションを準リアルタイム ストリーミング アーキテクチャに統合し、飛行中にリダクションを実行することでデータ処理時間を短縮する方法を示しました。 このシナリオでは、リダクションされたデータをエンドユーザーに提供し、データ レイク管理者が後で使用できるように raw バケットを保護します。 また、Amazon Comprehend で追加の処理を構築して、トーンやセンチメントを識別し、データ内のエンティティを識別し、各メッセージを分類することもできます。
この投稿の一部として各サービスの個別の手順を提供し、アカウントに必要なリソースをプロビジョニングできる CloudFormation テンプレートも含めました。 このテンプレートは、概念実証またはテスト シナリオにのみ使用してください。 開発者ガイドを参照してください Amazon Comprehend, ラムダ, Kinesisデータ消防ホース サービスの制限について。
PII の識別と編集を開始するには、次を参照してください。 個人を特定できる情報(PII). この投稿のアーキテクチャ例では、Kinesis Data Firehose データ変換を使用して、Amazon Comprehend API をほぼリアルタイムのデータと統合できます。 Kinesis Data Firehose を使用して準リアルタイムのデータを使用して構築できるものについて詳しくは、以下を参照してください。 Amazon Kinesis Data Firehose 開発者ガイド. このソリューションは、Amazon Comprehend と Kinesis Data Firehose が利用可能なすべての AWS リージョンで利用できます。
著者について
ジョー・モロッティ アマゾン ウェブ サービス (AWS) のソリューション アーキテクトであり、米国中西部のエンタープライズ顧客を支援しています。 彼は幅広い技術的役割を果たし、顧客の可能性の芸術を示すことを楽しんでいます。 余暇には、家族と一緒に新しい場所を探索したり、スポーツ チームのパフォーマンスを分析したりして充実した時間を過ごしています。
スリハーシュアダリ アマゾン ウェブ サービス (AWS) のシニア ソリューション アーキテクトであり、顧客がビジネスの成果からさかのぼって AWS で革新的なソリューションを開発するのを支援しています。 長年にわたり、彼はさまざまな業界のデータ プラットフォームの変革に関して複数の顧客を支援してきました。 彼の主な専門分野には、テクノロジー戦略、データ分析、およびデータ サイエンスが含まれます。 余暇には、テニスをしたり、テレビ番組をどんちゃん騒ぎしたり、タブラを楽しんだりしています。