こんにちは、CE課の江利です。
Salesforceのレポート結果を定期的にCSV出力したいみたいな要件ってあるのではないかなと思います。この記事ではCRM Analyticsから出力結果をCSV形式でAmazon S3に書き出すAmazon S3 出力接続
機能の設定方法と実際に使ってみた感想を紹介したいと思います。
なお、CRM Analyticsは既に利用可能であるという前提での記事となりますのでご了承ください。
基本的にはこちらのHelpの手順に沿って設定を行っていきます。
Amazon S3 出力接続を有効化
本機能は有効化しなければ利用できませんので、まずは機能を有効化します。設定画面よりクイック検索にAnalytics
と入力し設定
と進みAmazon S3 出力接続を有効化
にチェックを入れ保存します。
出力先S3バケットとIAMユーザーを作成
出力結果を格納するS3バケットと、作成したS3バケットへの読み書きの権限のみ付与されたIAMユーザーを作成します。その際Amazon S3 出力接続の仕様上S3バケット直下には出力できないため必ずフォルダを作成しておいてください。
後述しますが、本機能の制限により自由度は極めて低いため専用のS3バケットと専用のIAMユーザーの作成推奨です。
新しい接続を作成
データマネージャー
に移動し新しい接続を作成します。
サイドバーの接続より新しい接続
をクリックします。
コネクタタイプ出力を選択しAmazon S3 出力コネクタ
を選択したら次へボタンをクリックします。今回は出力接続はAmazon S3しか有効化していないため選択肢はAmazon S3 出力コネクタ
の一択です。
接続を設定画面の項目はすべて必須項目になっています。Access KeyとSecret KeyはIAMユーザー作成時に発行したものを入力してください。Folder Pathは作成したS3バケットのバケット名を入力してください。
Region Nameがちょっと罠なのですがAWS service endpointsに記載されているNameを一字一句間違わずに入力する必要がありますので要注意です。東京リージョンだとap-northeast-1
と入力しちゃいそうですがAsia Pacific (Tokyo)
と入力してください。(公式からコピペ推奨)*1
出力用のレシピを作成
出力接続で使用するレシピを作成します。レシピより新規レシピボタンをクリックします。
入力にはレポートやカスタムオブジェクトなど様々なソースが選択可能です。今回はテスト用に作成したカスタムオブジェクトを設定します。出力には先程作成した出力接続を設定します。オブジェクト名は先程作成したS3バケットにあるフォルダの中から選択可能になっています。
今回は即時実行したいので保存して実行ボタンをクリックします。定期実行したい場合はレシピよりスケジュール設定が可能です。
出力結果の確認
それでは実際に出力された結果を確認したいと思います。先程作成したS3バケットを確認するとこのようなファイルが出力されています。
ファイル名 | 説明 |
---|---|
_SUCCESS | CSVファイルが完全に書き込まれた場合に生成されます。 |
output_0.csv | ファイル命名規則は[Folder Path]_n.csvとなりn=0から始まりデータ量が多い場合には自動で複数のCSVファイルに分割され順に1,2,3...と加算されていきます。 |
schema.json | 名前、データ型、精度など、各列に関する情報が含まれます。 |
出力されるCSVファイル仕様は下記の通りです。
- ヘッダ行は無し(schema.jsonに定義されているため)
- カンマ区切り
- 引用符は基本的には無しだが改行を含むカラムは
"
(ダブルクォーテーション)括り - 文字コードはUTF-8
まとめ
Salesforce標準のウィークリーエクスポート機能を使った場合はテキストエリアなどの改行が破棄されてしまうので、CRM Analyticsが利用可能な環境下であれば本機能で補完できると思います。*2 48時間以内にリンククリックしてダウンロードしなければならない儀式も不要になるのでCRM Analyticsの利用状況が許されるのであれば是非活用してみてください。なお、Salesforceローカルデータの同期数は最大100個までの制限がありますのでご留意ください。
S3バケットのバージョニングを有効にすれば履歴管理も可能ですしウィークリーエクスポートより短いスパンでのバックアップも可能です。
今回のポイントは接続作成時のリージョン名です。これはかなり罠で知らないとハマる可能性大です。初期値でUS East (N. Virginia)
が入っているのが唯一の手がかりで、公式HelpにひっそりとAWS service endpointsのリンクが貼ってありますが高確率で見落とすと思われます。
Amazon EventBridgeで_SUCCESS
ファイルの作成を検知してAWS Lambdaを呼び出すみたいなことも可能ですが、それはまた別の機会に紹介したいと思います。
この記事がどなたかの問題解決の一助となればと思います。それでは良きSalesforceライフを!
江利 義陽(記事一覧)
CE部CE課でSalesforceエンジニアをやっています。Salesforce歴は12年目くらいなのでチョットだけわかります。
記事への質問やフィードバックは yoshiaki.eri@serverworks.co.jp までお願いいたします。
Trailblazer プロファイル