😸
Amazon Redshiftに3rd Pary Dataを連携させる ~AppFlow編~
本ドキュメントは以下の抜粋となります。また、簡易的な作業メモとなります。
接続仕様
- 双方向での通信
- スケジュール、オンデマンド、イベントドリブンで連携が可能
- 通信は暗号化される。独自の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すると楽
- Query EditorからLoadすると楽
-
Redshift側の要件
- Role
- AmazonS3ReadOnlyAccess
- KMSへのアクセス
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "*" } ] }
- ネットワーク
- パブリックアクセス有効化
- Role
Mapping
一括処理
めちゃくちゃ大変。事前にマッピングcsv作った方が良いかも。
妥当性確認
フィルタリング
AWS to Salesforce
-
S3 to Salesforce
-- CSV ファイルに、Salesforce の項目に対応付ける項目名を記載したヘッダー行が必要 -
レコード更新のタイプ
- 新規レコードを挿入
- 既存のレコードを更新
- レコードの更新・挿入
-
項目Mapping
Discussion