開発ツールのレビューサイト
検索結果がありません
Xのツイートボタン
このエントリーをはてなブックマークに追加
Xのツイートボタン
このエントリーをはてなブックマークに追加
スタートアップのデータ分析基盤はじめの一歩 - AWSでデータパイプラインを爆速構築
公開日 更新日

スタートアップのデータ分析基盤はじめの一歩 - AWSでデータパイプラインを爆速構築

はじめに


みなさん、こんにちは。アマゾンウェブサービスジャパン合同会社 ソリューションアーキテクトの冨山です。

スタートアップにとって、「データ駆動で意思決定する体制」を構築することは、事業を成功させるための重要な要素です。しかし、多くのスタートアップは限られた時間的・金銭的リソースの中で、データ分析基盤を構築することに苦労しています。本記事では、AWSサービスの構築例をまとめた公開レポジトリであるAWS Samplesをそのまま自社用に活用して、最小限の労力でクイックにコスト効率の良いデータ分析基盤を構築する方法を紹介します。

Amazon Simple Storage Service(以下、Amazon S3)、AWS Glue、Amazon Athena、Amazon QuickSightを組み合わせることで、データの収集から変換、分析、可視化までを自動化したエンドツーエンドのパイプラインを構築できます。このパイプラインは、AWS LambdaやAWS Step Functionsを用いてサーバレスで制御されるため、スケーラブルかつ運用負荷の少ない構成が可能です。

※ 本記事は、スタートアップ向けのデータ分析基盤の構築サンプル集 aws-samples/startup-data-pipeline-samples に含まれる、 aurora-athena-sample の構築手順を開発者向けにより詳細に解説したものです。バージョンの差異等の理由により不具合が生じた場合には、最新のレポジトリを参照されることを推奨いたします。

アーキテクチャ概要

パイプラインのアーキテクチャ


このデータパイプラインは以下のコンポーネントで構成されています。

  1. データソース: Amazon Auroraをデータソースとして使用します。既存のデータベースを利用することも、サンプル用に新規作成することも可能です。
  2. データ抽出: Cluster Exportを利用してAmazon AuroraのデータをAmazon S3にエクスポートします。Cluster Exportの仕様上、エクスポート対象は全データとなりますが、後続の処理で差分データのみを抽出します。
  3. メタデータ管理: AWS Glue Crawlerを利用して、S3に格納されたデータのスキーマを自動検出し、AWS Glue Data Catalogにメタデータを登録します。これにより、Amazon Athenaからデータを簡単にクエリできるようになります。
  4. データ変換: dbt(data build tool)とAmazon Athenaを利用して、モデルの定義に沿ってデータを変換し、データマートのテーブルを更新します。サンプルでは、タイムスタンプ情報を読み取り、差分データのみをインサートする実装になっています。
  5. データ分析・可視化: Amazon AthenaでSQLクエリを実行し、Amazon QuickSightでデータを可視化します。

    上記の一連のプロセスを、AWS Step Functionsを使用してオーケストレーションしています。

    本アーキテクチャはデータレイクにAmazon S3、データモデルの定義にdbtを使用しているため、すぐにデータウェアハウスをアーキテクチャに組み込むことができます。例えばクエリの実行時間が課題になった際、データウェアハウスにAmazon Redshiftを採用すると、Amazon S3のデータを直接クエリできます。Amazon S3からAmazon RedshiftにデータをCOPYすることも可能です。その場合、dbtにAmazon Redshiftの環境を追加することで、モデル定義を流用してデータパイプラインを展開できます。

料金試算

以下は、データ分析を始めようとするスタートアップでよくあるシンプルな利用ケースを想定した月額コストの目安です。この場合、月額の固定費はおよそ35USDとなります。

前提条件

  • 分析対象のデータサイズ:10GB(Parquet圧縮後 約3GB)
  • データ更新頻度:1日1回
  • QuickSightの利用ユーザー:作成者1名、閲覧者(リーダー)2名
  • Athenaの利用者:分析者3名が1日10回ずつクエリ実行
  • 2025年7月時点のオレゴンリージョンでの価格をもとに試算
  • VPCエンドポイント含むデータ転送料金は考慮外
サービス費用計算
Amazon Aurora Cluster Export3 USD10GB × 0.01 (USD/GB) × 30(days)
AWS Glue Crawler2.2 USD0.44 (USD/h) × 10(min)/60(min) × 30(days)
Amazon QuickSight30 USD24 (USD/作成者) + 2 × 3 (USD/リーダー)

また、3人の分析者が1日に10回ずつフルスキャンでクエリをする場合、月額の変動費はおよそ14USD。合計およそ月額49USDとなります(オレゴンリージョンでの試算)。

サービス費用計算
AWS Glue Data Catalog0 USD3人 × 10(クエリ/day) × 30(days) < 100万回のため無料
Amazon Athena13.5 USD0.003(TB) × 5(USD/TB) × 3(人) × 10(クエリ/day) × 30(days)

このアーキテクチャは、サーバーレスのサービスを中心に構成されているため、インフラ管理の負担が少なく済みます。また、使用した分だけ従量課金されるため、コスト効率が良い特徴があります。

実装手順

Step1: 初期設定

まずは、必要な設定を行い、環境をセットアップします。

以下の手順は全てオレゴンリージョン(us-west-2)で行います。

1. リポジトリのクローン

$ git clone https://github.com/aws-samples/startup-data-pipeline-samples.git
$ cd startup-data-pipeline-samples/aurora-athena-sample

2. サンプルデータのアップロード

新規DBを作成してサンプルデータを使用する場合には、以下の手順を前もって行います。

  1. Amazon S3に任意のバケットを作成する。
  2. サンプルデータを解凍する。
# サンプルデータの解凍
$ tar -xzvf ../sampledata/sample.tar.gz -C /tmp/
  1. S3バケットにアップロードする。
# S3バケットにアップロード
$ aws s3 cp /tmp/sample/ s3://sample-ticket-data/ --recursive

3. 設定ファイルの編集

config/config.tsファイルを開き、以下のパラメータを環境に合わせて設定します。

export const config: Config = {
    pipelineName: "sample-ticket-database",  // パイプライン名
    isExistDB: false,  //既存DBを使う場合はtrue
    dbClusterName: "sample-ticket-database",  // Auroraクラスター名
    dbName: 'demodb',   // データベース名
    schemaName: 'demodb',   // スキーマ名
    sampleDataBucketName: 'sample-ticket-data', // サンプルデータ用S3バケット名
    snapshotS3BucketName: 'sample-snapshot-bucket', // スナップショット用S3バケット名
    s3ExportPrefix: "s3export",  // S3エクスポート先プレフィックス
    enableBackupExportedData:true,  // エクスポートデータのバックアップ有効化
    loadSchedule: {minute:'30', hour:'3', weekDay:'MON-FRI', month:'*', year:'*'}   // データロードスケジュール(毎日0時)
}

sampleDataBucketName には、先ほど作成したバケット名を記入します。 snapshotS3BucketName には、これからAWS CDKによって作成する予定のS3バケット名を記入します。このバケットを手動で作成する必要はありません。

4. CDKデプロイ

AWS CDKを使用して、必要なリソースをデプロイします。

$ npm install
$ npx cdk bootstrap
$ npx cdk deploy --all

デプロイが完了すると、以下のようなAWSリソースが作成されます。

  • Amazon Aurora DBクラスター(isExistDB: falseの場合)
  • S3バケット(スナップショット用)
  • AWS Glue Crawler
  • AWS Glue Database
  • AWS Lambda関数(データ処理用)
  • AWS Step Functions(パイプライン制御用)
  • Amazon Elastic Container Serviceのクラスターとタスク定義(dbt実行用)
  • AWS Identity & Access Managementロール(各サービスのアクセス権限用)

Step2: サンプルデータ取り込み

新規でデータベースを作成した場合(isExistDB: false)、データベースにサンプルデータを取り込む必要があります。

1. データベースへの接続

デプロイ時に作成されたEC2インスタンスを使用して、Auroraデータベースに接続します。

  1. AWS Management Consoleから、EC2サービスページを開きます。
  2. SampleDataSourceStackから始まるインスタンス名を選択し、「接続」をクリックします。
  3. Session Managerタブを選択し、「接続」を押します。ターミナルが開くので、一旦置いておきます。


2. データベース認証情報の取得

  1. AWS Management ConsoleからAWS Secrets Managerサービスページにアクセスします。
  2. AthenaPipelineSource/adminという名前のシークレットを選択します。
  3. 「シークレットの値を取得する」をクリックして表示されるパスワードを、次のステップで使用します。


3. データベースへのログイン

  1. EC2インスタンスのターミナルで以下のコマンドを実行します。
mysql -h <host> -u admin -p

<host>には、先ほど取得しておいたシークレット内のhostを代入します。

  1. パスワードの入力を求められるはずです。その際は、先ほど取得した password を入力します。


4. サンプルデータのインポート

  1. sampledata/setupdata.sqlファイルを編集します。--- EDIT S3 BUCKET ---の行の下に登場するS3バケットの名前を、先ほど手動で作成したサンプルデータ用のバケット名に変更します。
  2. 編集したsampledata/setupdata.sqlの内容を、EC2上で開いているMySQLのシェルにコピー&ペーストして実行します。これにより、新規作成したデータベースにサンプルデータが挿入されます。

Step3: ETLパイプライン実行

パイプラインは、Amazon EventBridgeによって定期的に実行されるように設定されていますが、手動で実行することも可能です。

1. Step Functionsの実行

  1. AWS Management ConsoleでStep Functionsサービスを開きます。
  2. SampleAthenaPipelineから始まるステートマシンを選択します。
  3. 「Start Execution」をクリックし、以下のJSONを入力します。
{
  "EnableBackup": "True"
}


  1. 「実行を開始」ボタンをクリックして実行を開始します

2. 実行フローの確認

Step Functionsの実行フローは、以下のステップで構成されています。


  1. RunRDSExportTask: AuroraからS3へのデータエクスポート
  2. CheckExportTask: エクスポートタスクの完了確認
  3. CrawlExportedData: AWS Glue Crawlerの起動
  4. Check Crawler Status: Crawlerの完了確認
  5. RunDbtTask: dbtによるデータ変換処理
  6. CleanupTask: 一時リソースのクリーンアップ

各ステップの実行状況はStep Functionsのビジュアルワークフローで確認できます。

3. Athenaでのクエリ確認

パイプラインの実行が完了したら、Athenaでデータをクエリできるようになります。

  1. AWS Management ConsoleでAthenaサービスを開きます。
  2. クエリエディタで、ワークグループ athenaWorkGroup を選択し、作成されたデータベース(パイプライン名と同じ)を選択します。
  3. テーブル一覧から対象のテーブルを選択し、クエリを実行します。
SELECT * FROM "SampleAthenaPipeline"."event" LIMIT 10;

Step4: Amazon QuickSightを用いた可視化

最後に、Amazon QuickSightを使用してデータを可視化します。

1. QuickSightのセットアップ

Amazon QuickSightのアカウントをまだ作成していない場合は、公式ドキュメントを参照してアカウントを作成してください。

2. S3バケットへのアクセス権限設定

  1. QuickSightに管理者としてログインします。
  2. 右上の「QuickSightを管理」>「セキュリティとアクセスの許可」>「QuickSightのAWSのサービスへのアクセス」から、「管理」をクリックします。
  3. S3を選択し、対象のS3バケット(スナップショット用バケット)へのアクセス権限を付与します。

3. データセットの作成

  1. QuickSightのトップページに戻り、サイドバーの「データセット」をクリックします。
  2. 「データセットの作成」>「Athena」をクリックします。
  3. 対象のワークグループ、作成されたGlueデータベース(パイプライン名と同じ)、対象のテーブルを選択します。
  4. 「データセットの作成」をクリックします。

4. 分析とダッシュボードの作成

データセットが作成されたら、QuickSightの分析機能を使用してグラフやダッシュボードを作成できます。


  1. 作成したデータセットを選択し、「分析」をクリックします。
  2. ビジュアルタイプを選択し、フィールドをドラッグ&ドロップしてグラフを作成します。
  3. 複数のビジュアルを組み合わせてダッシュボードを作成します。
  4. 「公開」をクリックしてダッシュボードを共有します。

次のステップ

このサンプルパイプラインをベースに、以下のような拡張が考えられます。

1. データモデルの拡張

dbtを活用して、データマート用にオリジナルのデータには存在しないデータモデルを構築できます。サンプル内の soldnum.sql の例のように、既存のテーブルを統合して新たなテーブルを作成できます。

with sales as (
    select * from {{source('raw','demodb_sales') }}
),

users as (
    select * from {{source('raw','demodb_users') }}
),

rawdate as (
    select * from {{source('raw','demodb_date') }}
),

sales_per_users as (
    select
        sellerid,
        username,
        city, 
        sum(qtysold) as qtysoldsum
    from sales, rawdate, users
    where sales.sellerid = users.userid
    and sales.dateid = rawdate.dateid
    group by sellerid, username, city
)

select * from sales_per_users

2. 差分更新ロジックのカスタマイズ

このサンプルでは、テーブルの差分更新を incremental materialization で行っています。サンプル内の event.sql の例では、 is_incremental 配下の WHERE 文が、差分を取るためのフィルタの役割をしています。こちらを変更することで、eventテーブルの更新ロジックをカスタマイズできます。

{{
    config (
        materialized = 'incremental',
        unique_key = 'starttime'
    )
}}
select
    *
from {{ source('raw','demodb_event') }}
{%- if is_incremental() %}
    where starttime > cast((select max(starttime) from {{ this }}) as timestamp)
{%- endif %}


まとめ

本記事では、AWS CDKを使用して、Amazon Aurora、Amazon S3、AWS Glue、Amazon Athena、Amazon QuickSightを組み合わせた、AWS Step Functionsによるミニマムなデータパイプラインの構成手順を紹介しました。このパイプラインにより、Amazon Auroraデータベース内に格納されたデータをダッシュボードで可視化することが可能になりました。

このように既存サンプルを有効活用すれば、初期投資を抑えながらスモールスタートでデータ分析基盤を構築できます。アジリティ・コスト削減・データに基づいた意思決定のいずれも重要なスタートアップの皆様には非常におすすめです。

◆執筆:アマゾンウェブサービスジャパン合同会社 ソリューションアーキテクト 冨山英佑

関連した特集記事

「もし、○○な仕様のサービスを立ち上げるなら、あなたはどんなアーキテクチャを組みますか?」著名企業のエンジニアに聞いた

「もし、○○な仕様のサービスを立ち上げるなら、あなたはどんなアーキテクチャを組みますか?」著名企業のエンジニアに聞いた

システムのアーキテクチャ設計をする際は、様々な要素を考慮する必要があります。この記事では、架空のWe...

もっとみる
大規模ワークフローを支える AWS Step Functions 活用ノウハウ ― Contract One Entry の事例に学ぶ

大規模ワークフローを支える AWS Step Functions 活用ノウハウ ― Contract One Entry の事例に学ぶ

Sansan株式会社によるAWS Step Functionsの運用ノウハウを大規模ワークフローとと...

もっとみる
 JavaScriptビルドツール徹底ガイド──歴史と進化、LINEヤフーの技術選定

JavaScriptビルドツール徹底ガイド──歴史と進化、LINEヤフーの技術選定

本記事では、LINEヤフー株式会社の浜田真成さんに、JavaScriptのビルドツールについて解説い...

もっとみる
MCP導入の現在地  〜プロダクト開発での活用のリアル〜

MCP導入の現在地 〜プロダクト開発での活用のリアル〜

近年、AI技術は急速に進展し、開発現場においてもその活用が広がっています。特にAIエージェント・MC...

もっとみる
Cloud Run・Vertex AI を活用した最適化システム開発をスケールさせる基盤戦略

Cloud Run・Vertex AI を活用した最適化システム開発をスケールさせる基盤戦略

株式会社 ALGO ARTISのGoogle CloudにおけるCloud Run・Vertex A...

もっとみる
MCPセキュリティの基本と実践 〜専門家の解説とツールで理解する、セキュリティリスクとその対策〜

MCPセキュリティの基本と実践 〜専門家の解説とツールで理解する、セキュリティリスクとその対策〜

今回は、MCP(Model Context Protocol)をより安全に活用するためのセキュリティ...

もっとみる

関連ツール

dbt

dbt Labs, Inc.

Amazon Athena

Amazon Web Services, Inc.

AWS Glue

Amazon Web Services, Inc.

Amazon QuickSight

Amazon Web Services, Inc.

Amazon Aurora

Amazon Web Services, Inc.

Amazon S3

Amazon Web Services, Inc.

AWS Step Functions

Amazon Web Services, Inc.

関連するツールを調べる

データパイプライン

dbt

データレイク

Amazon Athena

データパイプライン

AWS Glue

BI

Amazon QuickSight

RDBMS

Amazon Aurora

データレイク

Amazon S3

ワークフロー自動化・連携

AWS Step Functions

関連する記事を見る

「もし、○○な仕様のサービスを立ち上げるなら、あなたはどんなアーキテクチャを組みますか?」著名企業のエンジニアに聞いた
「もし、○○な仕様のサービスを立ち上げるなら、あなたはどんなアーキテクチャを組みますか?」著名企業のエンジニアに聞いた
大規模ワークフローを支える AWS Step Functions 活用ノウハウ ― Contract One Entry の事例に学ぶ
大規模ワークフローを支える AWS Step Functions 活用ノウハウ ― Contract One Entry の事例に学ぶ
 JavaScriptビルドツール徹底ガイド──歴史と進化、LINEヤフーの技術選定

ビルド

JavaScriptビルドツール徹底ガイド──歴史と進化、LINEヤフーの技術選定
MCP導入の現在地  〜プロダクト開発での活用のリアル〜
MCP導入の現在地 〜プロダクト開発での活用のリアル〜
Cloud Run・Vertex AI を活用した最適化システム開発をスケールさせる基盤戦略

コンテナ

サーバレス

IaC

Cloud Run・Vertex AI を活用した最適化システム開発をスケールさせる基盤戦略
MCPセキュリティの基本と実践 〜専門家の解説とツールで理解する、セキュリティリスクとその対策〜

アプリケーション脆弱性対策

MCPセキュリティの基本と実践 〜専門家の解説とツールで理解する、セキュリティリスクとその対策〜

資料ダウンロード

必要事項を記入のうえ、「この内容で送信する」ボタンを押してください。

  • ツールに関するご提案や最新情報の提供のため、資料ダウンロード後にFindy Toolsを契約している資料に該当する協賛会社(以下「協賛会社」といいます)から、記載いただいた情報をもとにご案内を差し上げる場合があります。
  • 上記ご案内のため、上記記載内容ならびにFindy Toolsにご登録いただいたユーザー情報を当社から協賛会社に対して提供いたします。