Amazon AppFlow
SaaS アプリケーション (Salesforce, Slack, SAP 等) と AWS サービス間のデータフローを構築するサービス
概要
Amazon AppFlow は、SaaS アプリケーションと AWS サービスの間で安全にデータを転送するフルマネージドの統合サービスです。Salesforce、SAP、Slack、Google Analytics、ServiceNow など 50 以上のコネクタを標準で備え、コードを書かずにデータフローを構築できます。転送中のデータに対してフィルタリング、マッピング、マスキング、バリデーションなどの変換処理を適用でき、ETL パイプラインの前処理としても機能します。PrivateLink を経由したプライベート接続に対応しており、インターネットを経由せずに SaaS とのデータ連携を実現できます。
フロー設計とデータ変換マッピング
AppFlow のフローは、ソース (データ取得元)、デスティネーション (データ送信先)、変換ルールの 3 要素で構成されます。ソースから取得したレコードに対して、フィールドのマッピング (名前変更、型変換)、フィルタリング (条件に合致するレコードのみ転送)、マスキング (個人情報の伏字化)、バリデーション (値の範囲チェック) を適用できます。Salesforce の商談データを S3 に Parquet 形式で出力し、Athena で分析するパイプラインは典型的なユースケースです。フィールドマッピングでは、ソース側のネストされた JSON 構造をフラットなカラムに展開する機能があり、複雑な SaaS データモデルをデータレイクに適した形式に変換できます。1 回のフロー実行で転送できるレコード数に上限はありませんが、Salesforce API のバルククエリ制限 (1 日あたりの API コール数) はソース側の制約として意識する必要があります。デスティネーションとして S3 を選択した場合、ファイルの分割サイズやパーティション構造 (日付ベースのプレフィックス) を指定でき、下流の分析基盤との整合性を保てます。
接続プロファイルと OAuth 認証管理
AppFlow の接続プロファイルは、SaaS アプリケーションへの認証情報を安全に管理する仕組みです。OAuth 2.0 ベースのコネクタ (Salesforce、Slack、Google Analytics 等) では、初回接続時にブラウザ上で認可フローを完了し、リフレッシュトークンが AWS Secrets Manager に自動保存されます。トークンの更新は AppFlow が自動で処理するため、運用者がトークンの有効期限を手動で管理する必要はありません。ただし、SaaS 側でパスワード変更やアプリケーションの再認可が発生した場合は、接続プロファイルの再認証が必要です。SAP や ServiceNow のように Basic 認証や API キーを使用するコネクタでは、認証情報を Secrets Manager に格納し、接続プロファイルから参照します。PrivateLink 対応のコネクタ (Salesforce、Snowflake 等) を使用すると、データ転送がインターネットを経由せず VPC 内のプライベートネットワークで完結します。接続プロファイルは複数のフローで共有でき、同一の Salesforce 組織から異なるオブジェクトを取得する複数フローで 1 つの接続プロファイルを使い回せます。
スケジュール実行とイベント駆動トリガー
AppFlow のフロー実行には、オンデマンド、スケジュール、イベント駆動の 3 つのトリガーモードがあります。スケジュール実行は最短 1 分間隔から設定でき、差分転送 (前回実行以降に変更されたレコードのみ取得) に対応しています。差分転送はソース側のタイムスタンプフィールドを基準に動作し、Salesforce の SystemModstamp や LastModifiedDate を自動検出します。イベント駆動トリガーは、Salesforce の Change Data Capture (CDC) や Platform Events と連携し、レコードの作成・更新・削除をリアルタイムに検知してフローを起動します。これにより、ニアリアルタイムのデータ同期が実現します。フロー実行の結果は EventBridge に自動通知され、成功・失敗に応じた後続処理 (Lambda 関数の起動、SNS 通知、Step Functions ワークフローの開始) を組み立てられます。料金はフロー実行 1 回あたりの処理レコード数に基づく従量課金で、1,000 レコードあたり約 0.001 USD です。大量データの初回ロードではコストが膨らむため、フィルタリングで必要なレコードに絞り込むことがコスト最適化の基本です。