😸

Amazon Redshiftに3rd Pary Dataを連携させる ~AppFlow編~

2024/01/19に公開

本ドキュメントは以下の抜粋となります。また、簡易的な作業メモとなります。

学習コンテンツ

接続仕様

  • 双方向での通信
  • スケジュール、オンデマンド、イベントドリブンで連携が可能
  • 通信は暗号化される。独自のKMSキーをベースに暗号化することも可能
  • NW経路はSalesforce Private Connect for AWSを利用することも可能(Salesforce非公開接続というらしい)
  • AppFlow は AWS PrivateLink を使用してこの設定を自動化する
  • AppFlow は AWS 環境と Salesforce 非公開接続の間に存在します (1)。AppFlow が自動的に PrivateLink エンドポイントを作成し (2)、このエンドポイント経由でデータを転送するため、データが公開インターネットに曝されることがありません。つまり、データが非公開で安全に転送されます。

    Amazon AppFlow 経由で Salesforce 非公開接続に結び付けた場合、AWS の追加料金は発生しません。

AppFlow料金

Salesforce から AWS への 1 GB のデータ転送ごとに課金

Salesforce側の要件

  • Salesforce アカウントで API アクセスが有効になっている必要がある。Enterprise Edition、Unlimited Edition、Developer Edition、Performance Edition では、API アクセスがデフォルトで有効になっています。
  • 組織に接続アプリケーションをインストールできるようにする。これも Salesforce のデフォルト設定です。
  • 組織に IP アドレス制限が適用されている場合は、『Amazon Web Services 全般のリファレンス』に記載されている AWS IP アドレス範囲が許可されていることを確認する。
  • Salesforce の変更データキャプチャを有効にして、イベント駆動型のフロートリガーを使用する必要がある。
  • AWS PrivateLink を使用して非公開接続を作成するには、「メタデータの管理」と「外部接続の管理」の両方のユーザー権限を有効にする必要がある。

AppFlow側の要件

  • Amazon AppFlow 組み込みログインアプリケーションの更新トークンポリシーが [更新トークンは取り消されるまで有効] に設定されている必要がある。設定されていないと、更新トークンの期限が切れたときにフローが失敗します。

ジョブフロー設定


日本語の説明を入れるとエラーになる。(2022/10/5 時点)

送信先
このフローを作成する場所と同じ AWS リージョンの S3 バケットを選択します。

項目Mapping

検証
[妥当性確認] セクションで、項目ごとに特定の検証を追加して、実行する特定のアクションを指定できます。たとえば、[取引先種別] 項目を選択し、「取引先種別が指定されていないまたは null の場合は、そのレコードを無視する」という条件を適用することができます。検証の設定は省略可能です。

データフィルター
作成日項目では、特定の日付より前または後に作成されたレコードに絞り込むことができます。

CDC設定

SF側: 変更データキャプチャ設定

AppFlow側: Salesforceイベント

  • 事前にRedshift側でテーブルを作成しておく

    • Query EditorからLoadすると楽
  • Redshift側の要件

    • Role
      • AmazonS3ReadOnlyAccess
      • KMSへのアクセス
      {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": "kms:Decrypt",
              "Resource": "*"
            }
          ]
      }
      
    • ネットワーク
      • パブリックアクセス有効化

Mapping

一括処理

めちゃくちゃ大変。事前にマッピングcsv作った方が良いかも。

妥当性確認

フィルタリング

AWS to Salesforce

  • S3 to Salesforce
    -- CSV ファイルに、Salesforce の項目に対応付ける項目名を記載したヘッダー行が必要

  • レコード更新のタイプ

    • 新規レコードを挿入
    • 既存のレコードを更新
    • レコードの更新・挿入
  • 項目Mapping

Discussion