CRM AnalyticsのAmazon S3 出力接続を使ってみた

記事タイトルとURLをコピーする

こんにちは、CE課の江利です。

Salesforceのレポート結果を定期的にCSV出力したいみたいな要件ってあるのではないかなと思います。この記事ではCRM Analyticsから出力結果をCSV形式でAmazon S3に書き出すAmazon S3 出力接続機能の設定方法と実際に使ってみた感想を紹介したいと思います。

なお、CRM Analyticsは既に利用可能であるという前提での記事となりますのでご了承ください。

基本的にはこちらのHelpの手順に沿って設定を行っていきます。

help.salesforce.com

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

docs.aws.amazon.com

出力用のレシピを作成

出力接続で使用するレシピを作成します。レシピより新規レシピボタンをクリックします。

入力にはレポートやカスタムオブジェクトなど様々なソースが選択可能です。今回はテスト用に作成したカスタムオブジェクトを設定します。出力には先程作成した出力接続を設定します。オブジェクト名は先程作成した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個までの制限がありますのでご留意ください。

help.salesforce.com

S3バケットのバージョニングを有効にすれば履歴管理も可能ですしウィークリーエクスポートより短いスパンでのバックアップも可能です。

今回のポイントは接続作成時のリージョン名です。これはかなり罠で知らないとハマる可能性大です。初期値でUS East (N. Virginia)が入っているのが唯一の手がかりで、公式HelpにひっそりとAWS service endpointsのリンクが貼ってありますが高確率で見落とすと思われます。

Amazon EventBridgeで_SUCCESSファイルの作成を検知してAWS Lambdaを呼び出すみたいなことも可能ですが、それはまた別の機会に紹介したいと思います。

この記事がどなたかの問題解決の一助となればと思います。それでは良きSalesforceライフを!

*1:よく見ると括弧の前に半角スペースが入っています

*2:1 項目の最大文字数は 32,000 です。

江利 義陽(記事一覧)

CE部CE課でSalesforceエンジニアをやっています。Salesforce歴は12年目くらいなのでチョットだけわかります。
記事への質問やフィードバックは yoshiaki.eri@serverworks.co.jp までお願いいたします。
Trailblazer プロファイル