AppFlow講座

この講座では、外部サービスとAWSの間でデータを連携するフルマネージドサービスであるAmazon AppFlowについて学びます。

  • Amazon AppFlowの概要と役割
  • 対応する外部サービスコネクタの種類
  • フローの構成要素(ソース・フィルター・マッピング・デスティネーション)
  • フローのトリガー設定(オンデマンド・スケジュール・イベント駆動)
  • データの出力形式と増分転送
  • エラーハンドリングと設計のポイント

1. AppFlowの概要

1.1 Amazon AppFlowとは

Amazon AppFlowは、外部サービスとAWSの間で、コードを書くことなくデータを安全に連携できるフルマネージドサービス(インフラの構築や運用をAWSが管理するサービス)です。

例えば、SalesforceやGoogle Analytics、Slack、Googleスプレッドシートなどの外部サービスからデータを自動的に取得し、Amazon S3やAmazon Redshiftなどに格納できます。従来、外部サービスからデータを取得するには、各サービスのAPIを呼び出すプログラムを自前で開発・運用する必要がありましたが、AppFlowを使えば、AWSマネジメントコンソール上の設定だけでデータ連携を実現できます。

1.2 なぜAppFlowが必要なのか

企業では、営業管理にSalesforce、コミュニケーションにSlack、データ管理にGoogleスプレッドシートなど、複数の外部サービスを利用しているケースが一般的です。これらの外部サービスに蓄積されたデータをAWSのデータ分析基盤に取り込むには、以下の課題があります。

  • サービスごとに異なるAPIの仕様を理解し、認証処理やページネーション(大量データを分割して取得する仕組み)、エラーハンドリングなどを含むプログラムを開発する必要がある
  • API仕様の変更への追従、認証トークンの管理、障害時のリトライ処理など、継続的な運用が必要になる
  • 外部サービスの認証情報(APIキーやOAuthトークン)を安全に管理し、データの転送経路を暗号化する必要がある

AppFlowはこれらの課題を解決し、ノーコードで安全なデータ連携を実現します。以下は、AppFlowによる外部サービスからAWSへのデータ連携の全体像を示した図です。

flowchart LR
    subgraph 外部サービス
        A[Salesforce]
        B[Google<br>スプレッドシート]
        C[Slack]
    end

    D[Amazon AppFlow]

    subgraph AWS
        E[Amazon S3]
        F[Amazon Redshift]
    end

    A -->|データ取得| D
    B -->|データ取得| D
    C -->|データ取得| D
    D -->|データ転送| E
    D -->|データ転送| F
💡 ポイント
AppFlowはデータの「収集」を担うサービスです。AppFlow単体で分析まで行うわけではなく、AppFlowで取り込んだデータをS3に格納した後、必要に応じてGlueなどで変換・加工し、Athenaなどで分析するという流れで使うのが一般的です。

2. 対応する外部サービスコネクタ

2.1 コネクタとは

コネクタとは、AppFlowが外部サービスと通信するためのインターフェースです。AppFlowには、主要な外部サービスに対応したコネクタがあらかじめ用意されています。コネクタを利用することで、外部サービスのAPIの仕様を意識することなく、設定画面からデータの取得先や取得内容を指定するだけでデータ連携を実現できます。

2.2 主なコネクタ一覧

AppFlowは数十種類の外部サービスコネクタに対応しています。代表的なコネクタを紹介します。

外部サービス 主なデータ 主な用途
Salesforce 商談データ、顧客情報、リード情報 営業データの分析、売上予測
Google Analytics Webアクセスデータ、ユーザ行動データ マーケティング効果の分析
Slack メッセージデータ、チャンネル情報 コミュニケーションデータの分析
Googleスプレッドシート スプレッドシートのデータ 業務データの集約・自動取り込み
Jira チケット情報、プロジェクトデータ プロジェクト進捗の分析
Zendesk チケット情報、顧客問い合わせデータ カスタマーサポートの分析
カスタムコネクタ(API) 任意のREST APIからのデータ 独自の外部サービスとの連携

対応コネクタの最新情報は、AWSの公式ドキュメントに記載があります。

2.3 接続(Connection)の作成

外部サービスとの連携には、まず接続(Connection)を作成します。接続には、外部サービス側で発行したAPIキーやOAuth認証の設定が含まれます。一度接続を作成すれば、複数のフローで再利用できます。

接続の認証方式は外部サービスごとに異なりますが、主に以下の2つのパターンがあります。

OAuth 2.0

OAuth 2.0は、ユーザのパスワードを共有せずに、アプリケーション間でアクセス権限を安全に委譲するための認証プロトコル(通信規約)です。AppFlowの接続設定時にブラウザ上で外部サービスにログインし、「AppFlowにデータの読み取りを許可する」という承認を行います。承認が完了すると、AppFlowが外部サービスのデータにアクセスできるようになります。Salesforce、Google系サービス、Slackなどの多くの外部サービスがこの方式に対応しています。

APIキー

APIキーは、外部サービス側であらかじめ発行された文字列をAppFlowの接続設定に入力する方式です。OAuth 2.0のようにブラウザでの承認操作は不要で、APIキーを入力するだけで接続が完了します。ZendeskやカスタムコネクタなどがAPIキー方式に対応しています。

💡 ポイント
どちらの認証方式でも、接続を一度作成すれば複数のフローで再利用できます。認証情報はAppFlowが安全に管理するため、コード内にAPIキーやトークンを記述する必要はありません。

3. フローの構成要素

3.1 フローとは

フローは、AppFlowにおけるデータ連携の実行単位です。「どの外部サービスから」「どのデータを」「どこに」「どのように」転送するかを定義します。例えば、「Salesforceの商談データから、過去30日分のレコードを取得し、必要なフィールドだけを選択してS3にParquet形式で保存する」という一連の処理が1つのフローになります。

以下は、フローを構成する4つの要素と処理の流れを示した図です。

flowchart LR
    A[ソース<br>データ取得元] --> B[フィルター<br>条件で絞り込み]
    B --> C[マッピング<br>フィールド変換]
    C --> D[デスティネーション<br>データ格納先]

フローは以下の4つの要素で構成されます。

3.2 ソース(Source)

データの取得元となる外部サービスとオブジェクト(テーブルやエンティティ)を指定します。例えば、Salesforceの「商談(Opportunity)」オブジェクトや、Googleスプレッドシートの特定のシートなどを指定します。

3.3 フィルター

取得するデータの条件を指定します。例えば、「作成日が過去30日以内のレコードのみ取得する」「ステータスが"完了"のレコードのみ取得する」といった条件を設定できます。フィルターを適切に設定することで、不要なデータの転送を避け、コストとパフォーマンスを最適化できます。

3.4 マッピング(フィールドマッピング)

ソース側のフィールド(列)をデスティネーション側のどのフィールドに対応させるかを定義します。フィールドの選択だけでなく、以下のような変換も行えます。

変換の種類 説明
フィールドの選択 必要なフィールドのみを転送する 全50フィールド中、分析に必要な10フィールドのみを選択
フィールド名の変更 デスティネーション側で別の名前を付ける 外部サービス側の「OpportunityName」をS3側で「deal_name」に変更
値のマスキング 個人情報などの機密データをマスクする メールアドレスの一部を「***」に置換
値の切り捨て 文字列の長さを制限する 備考フィールドを先頭100文字に切り捨て
バリデーション データの妥当性を検証する 必須フィールドがnullの場合はレコードを除外

3.5 デスティネーション(Destination)

データの格納先を指定します。主に以下のAWSサービスをデスティネーションとして利用できます。

デスティネーション 用途
Amazon S3 データレイクへの蓄積。後続のGlue・Athenaによる分析に利用
Amazon Redshift データウェアハウスへの直接ロード
Amazon EventBridge イベント駆動のワークフローのトリガー

データ分析基盤では、Amazon S3をデスティネーションに設定するのが最も一般的なパターンです。S3に格納したデータを、必要に応じてGlueなどで変換し、Athenaなどで分析するという流れになります。

4. フローのトリガー設定

4.1 トリガーの種類

フローの実行タイミングを制御するトリガーには、以下の3種類があります。

オンデマンド

オンデマンドは、手動で即座にフローを実行する方式です。AppFlowのコンソール画面から「フローを実行」ボタンをクリックすることで実行します。フローの動作確認やテスト、臨時のデータ取得など、必要なタイミングで1回だけ実行したい場合に使用します。

スケジュール

スケジュールは、指定した間隔でフローを定期的に自動実行する方式です。日次・週次・月次などのバッチ処理でデータを同期する場合に使用します。実行間隔は分単位から月単位まで柔軟に設定できます。

実行間隔 説明 適したユースケース
分単位 最短1分間隔で実行 ほぼリアルタイムのデータ同期が必要な場合
時間単位 1時間〜23時間間隔で実行 数時間おきのデータ更新で十分な場合
日単位 1日1回実行 日次の定期レポート用データの取得
週単位 週1回実行 週次の集計データの取得
月単位 月1回実行 月次の集計データの取得

イベント駆動

イベント駆動は、外部サービス側でデータが作成・更新されたタイミングで、自動的にフローが実行される方式です。スケジュール実行と異なり、データの変更をほぼリアルタイムにAWSに反映できます。リアルタイム性が求められるデータ連携に適しています。

📝 イベント駆動の対応状況
イベント駆動トリガーに対応している外部サービスは限られています(Salesforceなど)。対応していない外部サービスでリアルタイムに近い同期を実現したい場合は、スケジュール実行の間隔を短く設定することで対応します。
💡 ポイント
スケジュール間隔が短いほどデータの鮮度は高くなりますが、AppFlowのフロー実行回数に応じたコストが増加します。分析の要件に応じて、適切な実行間隔を選択してください。日次のバッチ分析であれば、日単位のスケジュールで十分なケースが多いです。

5. データの出力形式

5.1 S3への出力設定

S3をデスティネーションに設定する場合、以下の出力形式を選択できます。

出力形式 特徴 適したユースケース
JSON 外部サービスの元データ構造を保持。可読性が高い データの内容確認、後続でGlueによる変換を行う場合
CSV テキストベースで汎用性が高い Excelでの確認、軽量なデータ連携
Parquet 列指向で圧縮効率が高い。分析に最適 Athenaでの直接クエリ、大規模データ
💡 ポイント
後続でAthenaによる分析を行う場合は、Parquet形式で出力するのが最も効率的です。ただし、データの内容を確認したい段階ではJSON形式で出力し、内容を確認した後にParquet形式に切り替えるというアプローチも有効です。

5.2 ファイルの集約設定

フロー実行時のデータ出力方法として、以下の設定を選択できます。

設定 説明
単一ファイル すべてのデータを1つのファイルに出力する
分割出力 データ量に応じて複数のファイルに分割して出力する

小規模なデータであれば単一ファイル、大規模なデータであれば分割出力が適しています。

6. 増分転送

6.1 増分転送とは

フローを定期実行する際、毎回全データを転送するのではなく、前回の実行以降に新規作成または更新されたレコードのみを転送する仕組みを増分転送といいます。

増分転送を利用することで、以下のメリットがあります。

  • 差分のみを転送するため、データ量とコストを抑えられる
  • 全データを毎回取得する必要がないため、フローの実行時間が短くなる
  • APIのレート制限(一定時間内のリクエスト数の上限)に抵触しにくくなり、外部サービス側のAPI制限に対応しやすくなる

増分転送を設定するには、スケジュールトリガーの設定で「データ転送のタイプ」を「増分転送」に変更し、増分の判定に使用するフィールド(最終更新日時など)を指定します。

7. エラーハンドリング

7.1 フロー実行のエラー対応

AppFlowのフロー実行時にエラーが発生した場合、エラーの処理方法を以下の2つから選択できます。

フロー全体を停止

エラーが発生した時点でフローの実行を中止する方式です。データの整合性を重視する場合に適しています。エラーの原因を修正した後、フローを再実行することで対応します。

エラーレコードをスキップ

エラーが発生したレコードのみをスキップし、残りのレコードの処理を継続する方式です。一部のレコードにデータ不備がある場合でも、正常なレコードは確実に転送したい場合に適しています。

エラーの詳細はCloudWatch Logsで確認できます。フローの実行履歴から、転送されたレコード数やエラーの発生状況も確認可能です。

8. 主なユースケース

AppFlowの代表的なユースケースを紹介します。

8.1 営業データの分析

Salesforceの商談データや顧客データをS3に定期的に取り込み、Athenaで分析することで、営業パイプラインの可視化や売上予測に活用できます。

8.2 Webアクセスデータの統合分析

Google Analyticsのアクセスデータを取り込み、社内の業務データと組み合わせることで、「どのマーケティング施策が実際の購買につながったか」といったクロスチャネル分析が可能になります。

8.3 業務データの集約

Googleスプレッドシートで管理されている業務データ(予算管理表、KPIシートなど)をS3に自動的に取り込み、他のデータソースと統合して分析できます。手動でのデータ転記作業を排除し、データの鮮度と正確性を向上させます。

9. 設計のポイント

AppFlowを設計する際の主要な検討項目を以下にまとめます。

設計項目 検討内容 推奨・注意事項
トリガーの種類 オンデマンド / スケジュール / イベント駆動 分析の鮮度要件に応じて選択。日次バッチなら日単位のスケジュールで十分
出力形式 JSON / CSV / Parquet Athenaでの分析にはParquet形式を推奨
増分転送 全量転送 / 増分転送 定期実行の場合は増分転送を推奨。コストと実行時間を削減できる
フィールドマッピング 全フィールド / 必要なフィールドのみ 分析に必要なフィールドのみを選択し、不要なデータの転送を避ける
S3のパス設計 出力先のフォルダ構成 日付やデータ種別でフォルダを分け、後続のGlue処理がしやすい構成にする
エラーハンドリング エラー時の挙動 CloudWatch Logsでの監視とアラームの設定を推奨

10. 代表的な接続先の設定ガイド

AppFlowで外部サービスと接続するには、サービスごとにOAuth認証情報の作成やAPI設定などの事前準備が必要です。ここでは、代表的な接続先の公式設定ガイドを紹介します。実際にAppFlowを利用する際に参考にしてください。

接続先 公式ガイド 概要
Googleスプレッドシート Google Sheets の接続設定 Google Cloud ConsoleでのOAuthクライアントID作成と接続手順
Salesforce Salesforce の接続設定 Salesforceの接続アプリケーション作成と認証手順
Slack Slack の接続設定 Slack APIでのアプリ作成とOAuthトークン取得手順
Google Analytics 4 Google Analytics 4 の接続設定 Google Cloud ConsoleでのOAuth設定とGA4接続手順
Zendesk Zendesk の接続設定 ZendeskのOAuthクライアント作成と接続手順
Google BigQuery Google BigQuery の接続設定 Google Cloud ConsoleでのOAuth設定とBigQuery接続手順

対応するすべてのコネクタの一覧と設定方法については、Amazon AppFlow のサポートされているソースおよびデスティネーションに記載があります。

💡 ポイント
各外部サービスとの接続には、サービス側でのOAuth認証情報の作成やAPI設定が必要です。特にGoogleスプレッドシートやGoogle Analyticsの場合は、Google Cloud ConsoleでのプロジェクトとOAuthクライアントIDの作成が必要になります。接続設定の手順はサービスによって異なるため、実際に利用する際は上記の公式ガイドに記載があります。

11. まとめ

この講座では、外部サービスとAWSの間でデータを連携するフルマネージドサービスであるAmazon AppFlowについて学びました。

  • Amazon AppFlowは外部サービスとAWSの間でノーコードでデータを連携できるフルマネージドサービス
  • Salesforce、Google Analytics、Googleスプレッドシート、Slackなど、数十種類の外部サービスコネクタに対応している
  • フローはソース・フィルター・マッピング・デスティネーションの4つの要素で構成される
  • オンデマンド・スケジュール・イベント駆動の3種類のトリガーでフローの実行タイミングを制御できる
  • 増分転送により、差分データのみを効率的に転送できる
  • S3にデータを格納した後、必要に応じてGlueなどで変換し、Athenaなどで分析するパイプラインと組み合わせて利用するのが一般的