Amazon Web Services ブログ

AWS サーバーレスサービスを使用してクリックストリームデータをキャプチャする

クリックストリームデータとは、ユーザーと Web サイトまたはモバイルアプリケーションとの間で発生するデジタルインタラクションを収集したものです。リアルタイムにユーザーデータを収集し有用なインサイトを作成することは困難な場合があります。アマゾン ウェブ サービス(AWS)のサーバーレスサービスは、クリックストリームデータをシームレスにキャプチャ、処理、視覚化し、分析基盤に取り込むためのスケーラブルなアーキテクチャを提供するために役立ちます。

ユーザーインタラクションには、リンクやボタンのクリック、さまざまなページの表示、特定のページの閲覧時間、フォームの送信、ファイルのダウンロード、その他デジタル環境で行われるさまざまなアクティビティなど、さまざまなアクションが含まれます。クリックストリームデータが組織にとって重要である理由については、「クリックストリームデータによるビジネス成果の促進」を参照してください。

本ブログでは、AWS のサービスによって、サーバーのプロビジョニングや管理を必要とせずにクリックストリームデータを簡単に収集して処理する方法について詳しく見ていきます。

アーキテクチャ

このソリューションでは、 Amazon API Gateway 、 AWS Lambda 、 Amazon Kinesis データストリームを使用してクリックストリームデータを取り込んで処理し、Amazon Kinesis Data Firehose を使用して未加工データをアマゾンシンプルストレージサービス (Amazon S3) に保存し、次に Amazon Athena と Amazon QuickSight を使用してユーザーフレンドリーな方法でデータを分析および視覚化します。

サービス選定理由

クリックストリームデータは、ユーザーのトラフィックと行動に応じて非常に変動しやすく、大量のメッセージとして継続的にストリーミングされます。新しいアプリケーション機能、 Web サイトのレイアウト、またはマーケティングキャンペーンのパフォーマンスを評価する場合、迅速なアクションを可能にするためにそれらをリアルタイムで分析することが重要です。

このアーキテクチャ用に選択された AWS サービスは、クリックストリームデータを処理するための自動スケーリング機能と費用対効果の高いソリューションを提供します。これらのサービスは、入ってくるワークロードの変動に対応するようにリソースを動的にスケーリングし、ほぼリアルタイムの処理と分析を保証します。従量課金制の価格モデルでは、使用したリソースに対してのみ支払いが発生するため、過剰なインフラを用意しておく必要がなくなり、コストを最小限に抑えることができます。

Amazon API Gateway は、開発者があらゆる規模の API を簡単に作成、公開、保守、監視、保護できるようにする完全マネージド型サービスです。

AWS Lambda はサーバーレスのイベント駆動型コンピューティングサービスで、サーバーのプロビジョニングや管理を行わずに、事実上あらゆるタイプのアプリケーションやバックエンドサービスのコードを実行できます。Lambda は 200 以上の AWS サービスと Software-as-a-Service (SaaS) アプリケーションからトリガーできます。支払いは使用した分だけです。

Amazon Kinesis Data Streams は、あらゆる規模のデータストリームの収集、処理、保存を容易にするサーバーレスのストリーミングデータサービスです。

Amazon Kinesis Data Firehose は、ストリーミングデータを確実に収集、変換し、データレイク、データストア、分析サービスに配信する抽出、変換、ロード (ETL) サービスです。

Amazon S3 は、業界トップクラスのスケーラビリティ、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクトストレージサービスです。あらゆる規模と業種のお客様が、データレイク、クラウドネイティブアプリケーション、モバイルアプリなど、ほぼすべてのユースケースで任意の量のデータを保存および保護できます。

Amazon Athena では、場所を問わずペタバイト単位のデータを簡単に柔軟に分析できます。Athena を使用すると、Amazon S3 データレイクとオンプレミスのデータソースや SQL や Python を使用する他のクラウドシステムを含む 30 のデータソース からデータを分析したり、アプリケーションを構築したりできます。

Amazon QuickSight は、ハイパースケールの統合ビジネスインテリジェンス (BI) により、データ駆動型の組織を強化します。QuickSight を使用すると、すべてのユーザーが、最新のインタラクティブなダッシュボード、ページ分割レポート、埋め込み分析、自然言語クエリを通じて、同じ情報源からさまざまな分析ニーズを満たすことができます。

アーキテクチャ図

図 1 はクリックストリームのデータフローアーキテクチャを示し、クリックストリームのレコードが一連のステップを経てどのように処理されるかを示しています。図中のカスタマー Web ポータルは、Web サイトやモバイルアプリケーションなどのデジタルプラットフォームとして機能し、ユーザーがシステムを操作できるようにします。ユーザーが Web ポータルを操作してさまざまなリンクをクリックすると、クリックストリームデータは次のように処理されます。

図 1 — アーキテクチャ

  1. クライアント (カスタマー Web ポータル) は、クリックストリームペイロード (レコード) を API Gateway に送信します。
  2. API Gateway はレコードを Lambda に送信し、そこでデータが標準化されます。
  3. Lambda はレコードを Kinesis Data Streams に送信して非同期処理を行います。
  4. Kinesis Data Streams はリクエストを Kinesis Data Firehose に転送します。
  5. Kinesis Data Firehose は、1 分ごとにレコードをバッファリングし、S3 バケットにアップロードします。
  6. Athena は S3 バケットに保存されているデータのクエリと分析に使用されます。
  7. QuickSight を使用してダッシュボードを作成し、データを視覚的に表示します。

前提条件

このソリューションを導入するには、次が必要です。

  1. AWS アカウント
  2. AWS CloudFormation テンプレートを実行するための AWS Identity and Access Management (IAM) 権限

ステップ 1: ソリューションの実装

次のステップを実行して AWS リソースを作成し、アーキテクチャに記載したクリックストリームパイプラインを構築します。本ブログでは、AWS リージョン us-east-1 を使用します。

  1. CloudFormation スタックを起動します。
  2. Create stack 」ページで、「 Next 」 を選択します。

図 2 — CloudFormation を使用してスタックを作成する

  1. Specify stack details 」ページで、「 Next 」をクリックします。

図 3 — スタックの詳細

  1. 「 Configure stack options 」ページで、デフォルトの選択のままにして「 Next 」をクリックします。
  2. レビューページで、AWS CloudFormation が IAM リソースを作成する可能性があることを確認します。IAM の詳細については、 IAM の詳細を確認してください。
  3. Submit 」をクリックします。

図 4 — IAM リソースの確認

  1. スタックが完全にデプロイされると、スタックのステータスが CREATE_COMPLETE に変わります。CloudFormation スタックによって作成されたリソースは 「 Resources 」 タブを確認できます。

図 5 — スタックの状態

図 6 — 作成されたリソース

  1. Athena でクエリを実行する前に、クエリ結果を保存する S3 バケットを選択する必要があります。ステップ 9 ~ 15 に従って S3 バケットパスを設定します。
  2. Amazon Athena コンソールに移動し、「 Query your data 」 を選択します。
  3. Launch query editor 」をクリックします。

図 7 — Amazon Athena コンソール

  1. Query editor ページで、「 Settings 」タブを選択します。
  2. Query result and encryption settings 」セクションで、「 Manage 」をクリックします。

図 8 — クエリエディタの設定

  1. Manage settings 」 ページで、「 Browse S3 」をクリックします。
  2. Choose S3 data set 」ページで、clickstream-で始まる S3 バケットを選択し、「 Choose 」をクリックします。

図 9 — クエリ結果の場所

  1. Manage settings 」ページで、「 Save 」をクリックします。

図 10 — 設定の確認

  1. 次に、ステップ 17 ~ 20 に従って、クリックストリームデータを保存するテーブルを Athena に作成します。
  2. クエリーエディタで、「 Saved queries 」タブを選択します。

図 11 — Athena の保存したクエリ

  1. 名前フィールドで、「 ClickStreamAthenaNamedQuery- 」 で始まる名前を探し、その名前に関連付けられている ID リンクをクリックします。
  2. 図 12 のように、「 Editor 」タブにクエリが入力されていることを確認します。「 Run 」をクリックします。

図 12 — クエリの実行

  1. クエリが実行されると、図 13 に示す必要な列を含む clickstream_data テーブルが作成されます。

図 13 — テーブル作成

ステップ 2: ソリューションのテスト

後続のデータポイントを出力する Lambda 関数を使用して、クリックストリームデータをシミュレートします。

  • customerid
  • deviceid
  • productid
  • productcategory
  • productsubcategory
  • activitytype

ステップ 2a: データを取り込む

  1. AWS Lambda コンソールに移動します。
  2. ClickStream-IngestDataLambda 」で始まる Lambda 関数をクリックします。

図 14 — Lambdaを選択

  1. Test 」タブを選択します。任意のイベント名を入力します (たとえば、「 ClickStreamTest 」)。「 Save 」 をクリックし、「 Test 」をクリックします。

図 15 — Lambda テスト設定

  1. Lambda 関数は、図 1 のアーキテクチャ図のステップ 1 に示すように、ランダムなクリックストリームデータの生成を開始し、それらを API Gateway に渡します。
  2. 関数が実行されるまで 1 分ほどかかることがあります。Lambda 関数によって生成されたクリックストリームのデータを確認するには、「 Log Output 」セクションを確認してください。

図 16 — Lambda ログ

ステップ 2b: データを検証する

  1. Lambda 関数が実行されてから、データが Amazon S3 に表示されるまでに数分かかる場合があります。Kinesis Data Firehose は、受信レコードを S3 バケットに配信する前にバッファリングします。クリックストリームデータを Amazon S3 にすばやくアップロードするために、バッファ間隔を Kinesis Data Firehose の最小許容値である 60 秒に設定しました。
  2. Amazon S3 コンソールに移動します。
  3. 「 ClickStream-ClickStreams3Buket- 」で始まる S3 バケットをクリックし、下にあるフォルダ構造をナビゲートしてクリックストリームデータファイルを見つけます。Amazon Kinesis Data Firehose は、オブジェクトを Amazon S3 に配置する前に、 UTC 時間で YYYY/MM/DD/HH の形式でプレフィックスを追加します。プレフィックスは Amazon S3 フォルダ構造に変換され、スラッシュ (/) で区切られた各ラベルがサブフォルダになります。

図 17 — Amazon S3 パス

  1. オブジェクトリンクをクリックし、「 Open 」 をクリックして CSV ファイルを開きます。

図 18 — ファイルを開く

  1. データを確認してください。図19 に示すような表示になっているはずです。

図 19 — データを確認する

ステップ 2c: データの分析

  1. Amazon Athena コンソールのクエリエディタに移動します。
  2. Data source 」 フィールドで 「 AWSDataCatalog 」 が選択されていることを確認します。
  3. Database 」フィールドから「 clickstreamDb 」を選択します。
  4. 「 Tables 」の左側にある方向三角形をクリックしてテーブルを展開します。
  5. clickstream_data テーブルを見つけて、clickstream_data テーブル名の右端にある縦の 3 つの点をクリックします。ドロップダウンメニューから 「 Preview Table 」 を選択します。

図 20 — テーブルをプレビュー

  1. 図 21 に示すように、ingestClickStream Lambda 関数を介して取り込まれたデータが表示されるはずです。

図 21 — データを確認する

ステップ 3: Amazon QuickSight を使用してダッシュボードを作成する

  1. Amazon QuickSight コンソールに移動します。

a. 以前に QuickSight アカウントを作成したことがない場合は、手順 2 ~ 6 に従ってアカウントを作成します。QuickSight アカウントをすでにお持ちの場合は、ステップ 7 に進んでください。

  1. Sign up for QuickSight 」 ボタンをクリックします。
  2. Create your QuickSight account 」 ページで、既定の選択のままにして 「 Continue 」 をクリックします。
  3. Get Paginated Report add-on 」で、「 No, Maybe Later 」をクリックします。
  4. Create your QuickSight account 」ページで、

a. 「 Authentication method 」セクションで、「 IAM federated identities & QuickSight-managed users 」を選択します。
b. 米国東部 (バージニア北部) リージョンを選択します。
c.一意の QuickSight アカウント名を入力します。
d. 通知を受け取るメールアドレスを入力します。
e. IAM ロール で、「 QuickSight-managed role (default) 」 を選択します。
f. 「 Allow access and autodiscovery for these resources 」 で、 IAM 、 Amazon S3 、 Amazon Athena の各チェックボックスをオンにします。図 22 に示すように、他のすべてのボックスのチェックを外します。
g. チェックマークが付いたAmazon S3リソースの下で、「 Select S3 bucket 」リンクをクリックします。新しいポップアップウィンドウから、「 clickstream-clickstreams3bucket- 」で始まる S3 バケットを選択し、「 Finish 」 をクリックしてポップアップウィンドウを閉じます (図 23 を参照)。

  1. Finish 」 をクリックして Amazon QuickSight アカウントの作成を完了します。

図 22 — QuickSight アカウントの作成

図 23 — S3 バケットの選択

  1. 「 Go to Amazon QuickSight 」をクリックします。これにより、QuickSightが開きます。

図 24 — アカウントが作成されました

  1. 左側のナビゲーションメニューで「 Analyses 」が選択されていることを確認します。
  2. 右上隅の 「 New analysis 」 ボタンをクリックします。次のページで 「 New dataset 」 ボタンをクリックします。

図 25 — 新しい分析

  1. Create a Dataset 」ページで、「 Athena 」を選択します。
  2. New Athena data source 」ページで、お好みのデータソース名を入力し、「 Create data source 」 をクリックします。

図 26 — データソースの作成

  1. Choose your table 」ページで、以下を選択します。

a. 「 Catalog: contain sets of databases 」の下の awsDataCatalog
b. 「 Database: contain sets of tables 」の下の clickstream_db
c. 「 Tables: contain the data you can visualize 」の下の clickstream_data

  1. 完了したら、「 Select 」 をクリックします。

図 27 — テーブルを選択

  1. Finish dataset creation 」 ページで、デフォルトの選択のままにして 「 Visualize 」 をクリックします。

図 28 — データセット作成の完了

  1. 次のページで、「 Interactive Sheet 」が選択されていることを確認します。デフォルトの選択をそのまま使用して、「 Create 」をクリックします。

図 29 — データセット作成の完了 (続き)

クリックされた製品カテゴリの数を分析するビジュアルを作成します。

  1. 左上隅の 「 Add 」 をクリックし、「 Add Visual 」 をクリックします。
  2. Visual Types 」から円グラフアイコンを選択します。
  3. 図 30 に示すように、「 productcategory 」を「 Group/Color 」フィールドにドラッグアンドドロップします。これにより、「 productcategory 」別のレコード数を示す円グラフが生成されます。

図 30 — 製品カテゴリ

もう 1 つのビジュアルを追加して、各カテゴリの下でクリックされたサブカテゴリの数を分析してみましょう。

  1. 左上隅の 「 Add 」 をクリックし、「 Add Visual 」 をクリックします。
  2. Visual Types 」から垂直積み上げ棒グラフアイコンを選択します。
  3. 図31に示すように、 X 軸フィールドに「 productcategory 」をドラッグし、「 Group/Color 」フィールドに「 productsubcategory 」をドラッグアンドドロップします。

図 31 — 製品カテゴリ/サブカテゴリ

ステップ 4: クリーンアップ

今後課金されないようにするには、次の手順に従ってリソースを削除してください。

  1. QuickSight アカウントを削除する。

a. 右上の「プロファイルアイコン」をクリックします。
b. 「 Account Settings 」 をクリックします。
c. 「 Manage 」ボタンをクリックします。

図 32 — QuickSight アカウント設定

d. アカウント終了保護機能をオフにするには、「 Account Termination toggle 」を左にスライドします。
e. このアカウントを削除するには、「 Type “confirm” to delete this account box 」に「 confirm 」と入力します。
f. 「 Delete Account 」をクリックします。

図 33 — QuickSight アカウントの解約

  1. S3 バケットを空にします。

a. Amazon S3 コンソールに移動します。
b. clickstream-clickstreams3bucket で始まるバケットを選択し、「 Empty 」をクリックします。
c. 「 Empty bucket 」ページで、「削除の確認」フィールドに「 permanently delete 」と入力し、「 Empty 」をクリックします。

図 34 — S3 バケットの選択

図 35 — S3 バケットを空にする

  1. ソリューションを削除します。

a. CloudFormation コンソールに移動し、このプロジェクトの一環として作成した clickstream スタックを選択します。スタックをクリックし、「 Delete 」 をクリックします。

図 36 — CloudFormation スタックの削除

まとめ

AWS サーバーレスサービスを活用することで、クリックストリームデータを扱うための強力でスケーラブルなソリューションが得られます。 Amazon API Gateway 、AWS Lambda 、 Amazon Kinesis Data Streams 、 Amazon Kinesis Data Firehose 、 Amazon S3 、 Amazon Athena 、 Amazon QuickSight などのサービスを利用することで、組織はクリックストリームデータを切れ目なく収集し、処理、視覚化し、分析基盤に取り込むことができます。Kinesis Data Firehose は受信データを自動的にスケーリングしてバッファリングすることで取り込みプロセスを促進し、Lambda はデータ変換と加工のためのカスタムコードの実行を可能にします。

サーバーレスアーキテクチャにより、企業はさまざまなデータ量を効率的に処理し、オペレーションコストを削減し、迅速に反復処理を行い、デジタルコンテンツにおける顧客の行動の変化から学ぶことができます。また、クリックストリームデータから迅速にインサイトを抽出できるため、データ主導の意思決定と顧客体験の向上が可能になります。

AWS の担当者にお問い合わせいただき、当社がお客様のビジネスをどのように促進できるかをご確認ください。

参考文献

著者について

Pritam Bedse

Pritam Bedse は、アマゾン ウェブ サービスのシニアソリューションアーキテクトで、エンタープライズ企業のお客様を支援しています。彼の関心と経験には、AI/ML 、分析、サーバーレステクノロジー、カスタマーエンゲージメントプラットフォームなどがあります。仕事以外にも、Pritam は屋外でのガーデニングやグリルを楽しみます。

Christin Carter

Christin Carter は、アマゾン ウェブ サービスのプリンシパルアカウントマネージャーで、エンタープライズ企業のお客様を支援しています。彼女の関心と経験には、デジタルトランスフォーメーション、AI/ML 、分析、サーバーレステクノロジー、カスタマーエクスペリエンスソリューションなどがあります。仕事以外では、Christin が世界中を旅し、大小さまざまな新しい冒険を求めています。

Jared Warren

Jared Warren は、アマゾン ウェブ サービスのプリンシパルソリューションアーキテクトであり、エンタープライズ企業のお客様と協力しています。仕事以外では、ボードゲームをしたり、裏庭でバーベキューをしたりしています。

翻訳はソリューションアーキテクトの小西が担当しました。原文は こちら です。