概要
Salesforce Data Cloud における Snowflake との Zero Copy Integration (ゼロコピー統合)の構築手順を検証したため共有します。今回の検証では、 Salesforce の Trailhead で構築できる環境と Snowflake のトライアル環境で実施しています。
Zero Copy Integration (ゼロコピー統合)を実施することは簡単ですが、セキュリティ要件を満たしているかを確認してから本番利用を開始してください。Saleforce <-> Snowflake の連絡をセキュアに実施する必要があるのですが、現時点では下記の記載があるようにプライベート接続している Snowflake では利用できないようです。 Salesforce 上のデータは企業にとっては大切なデータが格納されていることがあり、データ流出などのリスクなどを適切に評価することが重要です。
AWS Private Link、Azure Private Link、Google Cloud Private Service Connect などのプライベート接続を使用して Snowflake をリリースしている場合は、データ共有を使用できません。
基本的な知識
Salesforce における Zero Copy Integration とは
Zero Copy Integration については、下記の記事が参考になります。他のクラウドサービスとの連携も実施できるようになるようですが、現時点では BigQuery 、Snowflake、及び、 Amazon Redshift がサポートされているようです。
引用元:Salesforce、「Zero Copy Partner Network」を発表 - Salesforce
実施手順
実施手順として下記の手順が Salesforce のドキュメントにて紹介されています。
下記の動画がステップごとに紹介されているため参考になりためです。最初が BigQuery の手順紹介であり、11分15秒あたりから Snowflake での手順が紹介されています。
実施手順
1. 環境の準備
1-1. Salesforce Data Cloud 環境の準備
無料の Trailblazer アカウントを作成してください。
はじめての Data Cloud Developer Edition というモジュールの上部にて、Data Cloud Developer Edition を構築します。
引用元:Get Started with Data Cloud Developer Edition | Salesforce Trailhead
作成された環境におけるインスタスの場所を確認してください。そのインスタンスの場所に応じて、 Snowflake にてリージョンを選択する必要があります。確認する方法としては、 Salesforce にログイン後、 Setup -> Company Information で表示された画面における右下の instace (例:Instance EU55
)で確認できます。環境に構築タイミングなどの要因により、 EU に割り振られる方と US に割り振られる方がいるようです。
1-2. Snowflake 環境の準備
下記のリンク先から Snowfalke のトライアル環境を申し込みます。
引用元:Snowflake Trial
クラウドリージョンを選択する画面にて、 Salesforce の環境が EU55 であることから、 AWS の EU (Frankfurt)で構築しました。
引用元:Snowflake Trial
下記のような内容のメールが届くため、クリックしてユーザーを作成すると Snowflake を利用できるようになります。
US リージョンに Salesforce 環境が構築された方は、下記のドキュメントを参考に Snowflake のクラウドリージョンを選択してください。
引用元:Data Cloud で Snowflake がサポートされる領域 (salesforce.com)
対応していないリージョンの Snowflake を Data Share Target で指定しようとすると下記のようなエラーが発生します。
We currently do not support the region your Snowflake account is in. Contact your Salesforce Admin for the list of supported Snowflake regions.
2. Snowflake にて認証情報の作成
2-1. Snowflake にログイン後に右上の+ Create
-> SQL Worksheet
を選択
2-2. 下記の SQL を記述して、そのコードを選択した上で実行してユーザーを作成
CREATE OR REPLACE USER sf_data_cloud
PASSWORD = '+U8Xi0VWdUmazDnP8ffFKsC2bRE='
LOGIN_NAME = 'sf_data_cloud'
DISPLAY_NAME = 'sf_data_cloud'
FIRST_NAME = 'sf_data_cloud'
MIDDLE_NAME = 'sf_data_cloud'
LAST_NAME = 'sf_data_cloud'
EMAIL = 'manabian.test@test.com'
DEFAULT_ROLE = 'PUBLIC';
2-3. 下記の SQL を記述して、そのコードを選択した上で実行して認証情報を作成
CREATE OR REPLACE SECURITY INTEGRATION
SFDATACLOUD
TYPE = OAUTH
OAUTH_CLIENT = CUSTOM
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://login.salesforce.com/services/cdpSnowflakeOAuthCallback'
ENABLED = TRUE
OAUTH_ISSUE_REFRESH_TOKENS = TRUE;
2-4. 下記の SQL を記述して、そのコードを選択した上で実行してOAUTH_AUTHORIZATION_ENDPOINT
列の値をコピー
DESC SECURITY INTEGRATION SFDATACLOUD;
2-5. 下記の SQL を記述して、そのコードを選択した上で実行して認証情報
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS( 'SFDATACLOUD');
下記のような json 形式で出力され、OAUTH_CLIENT_ID
とOAUTH_CLIENT_SECRET
の値をコピーする。
{"OAUTH_CLIENT_SECRET_2":"XXX","OAUTH_CLIENT_SECRET":"YYY","OAUTH_CLIENT_ID":"ZZZ"}
3. (省略可能)共有するオブジェクトの定義
3-1. Salesforce Data Cloud にて、Data Streams
タブにてNew
を選択
3-2. Salesforce CRM
を選択してNext をクリック
3-3. Sales
を選択してNext
をクリック
3-4. Next
をクリック
3-5. Deploy
をクリック
3-6. 作成されたLead Home
という Data Stream を選択
3-7. 右側にあるRefresh Now
を選択
3-8. Satatus
がSuccess
になるまで待機
3-9. Query Editor
タブにてNew
を選択
3-10. 適当なクエリ名を入力した上でSave
を選択
3-11. Lead
の右側の矢じり(▼) -> Create Query(*)
を選択し、表示されたクエリにてRun Query
を選択後にデータが表示されることを確認
4. Salesforce Data Cloud にて Data Share Targets の作成
4-1. Data Share Targets
タブにて右側のNew
を選択
4-2. Snowflake
を選択した上でNext
を選択
4-3. Account URL
に 2-4 の手順で取得した URL の一部を記述
2-4 の手順で取得した URL の/oauth/authorize
を除いた URL を記述します。
2-4 では下記の修正前の URL が取得できますが、 /oauth/authorize
の部分は不要であるためその箇所を取り除きます。
修正前)https://rd15062.eu-central-1.snowflakecomputing.com/oauth/authorize
修正後)https://rd15062.eu-central-1.snowflakecomputing.com
/oauth/authorize
を含めた場合にはAuthentication Status
がerror
となってしまうため、Data Share Targets を再作成してください。