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などで分析するパイプラインと組み合わせて利用するのが一般的