セールスフォースとAWSの連携で顧客データを活用

組織として所有している顧客データを活用して顧客エクスペリエンスをもっとも迅速に革新し、構築しようとするにつれて、Salesforce - 最先端のCRM(顧客関係管理)プラットフォーム - とAmazon Web Services(AWS)の緊密な統合が多くの可能性を切り開きます。

この記事では、SalesforceとAWSの統合シナリオについて説明します。 様々なコンテキストから考えて始めよう。組織内の顧客データは、複数のシステムやアプリケーションにまたがって個々のサイロに保管されることがよくあります。その後、企業は、顧客に対するデータアーカイブ作業、包括的な360度の視点をビジュアル化するコストを重ねて投資しないといけません。

データはシステム連携間で同期されるため、データのセキュリティは重要です。組織は、インターネットを経由せずに、AWSとSalesforceでホストされているアプリケーション間の信頼性の高いプライベート接続を必要としています。

今回紹介させていただく統合シナリオで使用される主要なAWSサービスには、Amazon Simple Storage Service(Amazon S3)があります。これは、顧客がデータレイクを支えるために使用する費用対効果の高いストレージとアーカイブを提供します。 AWS Lambdaは、サーバーをプロビジョニングまたは管理することなくイベントを処理するのに最適なコンピューティングサービスです。標準のSQLを使用してAmazon S3内のデータを分析するための対話型クエリのためのAmazon Athena。 AWS PrivateLinkは、仮想プライベートクラウド(VPC)、AWSサービス、およびAWSでホストされているオンプレミスアプリケーション間のプライベート接続を提供します。

これらおよび他のAWSサービスを活用して、図1のアーキテクチャはSalesforceとAWSの間でデータとイベントの接続を確立する方法を示します。

シナリオ1:商談レコードへの契約の添付 Salesforceサブスクリプションの管理を担当する、Acme Inc.のITマネージャであるJohnは、SalesチームがSalesforceの顧客の商談レコードに契約を結び付ける簡単な方法を探しています。 Johnはまた、Acmeのデータレイク(Data Lake) バックエンドサービスであるAmazon S3の商談全体のアーカイブを作成することも検討しています。

理想的には、商談データをアーカイブするだけでなく、添付ファイルのバージョンを管理し、このデータを他のソースからのAcmeのデータと共に使用して、機械学習モデルを教示したいと考えています。 Amazon SageMaker、AWS Lambda、Amazon Kinesisなど、AWSが提供するサービスはAcme Inc.で非常に人気があり、JohnはSalesforceの顧客データを分析するためにこれらのサービスを活用することがどれほど素晴らしいかと聞いています。

Acme Inc.の営業担当者はSalesforceからAmazon S3バケットに手動でデータをアップロードしますが、ジョンはデータをパブリックインターネット経由でAmazon S3にアップロードする前にローカルに保存することが多いため、データのセキュリティを心配しています。そのため彼はSalesforceオブジェクトデータを引き出するためにAWSソリューションにてシームレスで安全で費用効果の高い方法を探しています。

★ソリューション Johnの課題に対する解決方法を検討しましょう。 JohnのようなSalesforce管理者は、Salesforce Process Builderを使用して、Acmeの営業担当が商談レコードに契約を結び付けるとプラットフォームイベント(Salesforce Platform Event)をトリガする新しいプロセスを設定します。プラットフォームイベントを使用して、Johnは商談データの変更するに当たってSalesforce内または外部からNextアクションを実行できるのを監視する。

SaaS統合サービスの一部として実行されるAWS Lambda関数は、Platform Events APIを使用して新しいイベントをリステンする。

下記は一連のステップの概要です。これを図2に示します。

  • 商談レコードが作成または更新され、それによってプラットフォームイベントが起こる。

  • AWS Lambda関数sfdcDemo_SaasIはそのプラットフォームイベントにサブスクライブされ、そのメッセージをAmazon Simple Notification Service(SNS)に送信します。ここで、サブスクライブされたLambdaはアクションを実行できる。

  • Lambda関数sfdcDemo_Exampleがトリガーされて、 商談レコードの全てを取得する。 商談レコードに関連付けられている添付ファイルを取得する。 添付ファイルをAmazon S3にコピーする。 商談レコードをAmazon S3に書き込む。 *Amazon S3へのリンクを営業案件レコードに更新する。

  • Amazon S3にデータあれば、AWS Athenaを使用してSQL経由でデータをクエリできる。

実現しよう

*まず、Salesforce Lightning設定の[アプリケーション]の[アプリケーションマネージャ]で接続アプリケーションを作成しました。主な権限は次のとおりです。あなたに代わってリクエストを実行し、あなたの基本情報にアクセスし、そしてあなたのデータにアクセスして管理します。 IPルールを設定したくない場合は、IP制限を緩和することも重要です。

*次に、カスタムフィールド「OppId」を持つ「OppCRUD」という名前のプラットフォームイベントを作成しました。これはSalesforce Lightning設定(すべて)で定義されています。

*次に、商談のカスタムフィールドをいくつか作成しました。安全なAmazon S3ファイルダウンロードボタンを準備するためにこれらのフィールドを使用する。

*次に、Salesforce Process Builderで「SendEventWhenOppChanges」という名前のプロセスを作成しました。商談レコードが作成または更新されたときに、S3_archive_urlフィールドが空白でない場合は、作成または更新されたレコードのOppIdをOpportunityIdに設定して「OppCRUD」プラットフォームイベントを起こる。

*2つのラムダ関数が必要ありまして一つ目の関数sfdcDemo_SaasIはSalesforceプラットフォームイベントを購読し、トピック“ OppCRUD__e”に設定されています。これはOAuthメカニズムを使用してトークンを取得し今回、node.jsライブラリ「nforce」を利用してSalesforce APIを呼びやすくなるようです。 この関数はSalesforceにログインし、OAuthトークンを受け取ります。OAuthトークンは後続のすべてのAPIアクションで利用されます。 Salesforceからイベントを受信すると、Lambda関数はそれをSNSトピックに書き込む。

*単純なSNSトピックを使用するとSalesforceに直接接続しなくても他のAWSのやり取りを簡単に行うことができます。 SNSはAWS Lambdaを含むpub / subを介したさまざまなサブスクライバーへの配信をサポートしている。

*二つ目のLambda関数sfdcDemo_Exampleは、トピックsfdcDemo_deliveryへのSNSメッセージによってトリガーされます。 SNSメッセージのペイロードは、Salesforceプラットフォームイベントのペイロードを反映しています。 Lambda関数はSNSメッセージから商談IDを取得し、関連する商談レコードを照会します。 商談レコードが更新されると、Lambda関数は更新された商談レコードを、DataLakeキー+ OpportunityId +ミリ秒の日付タイムスタンプを使用してネーミングされたCSV(カンマ区切り値)ファイルとしてAmazon S3バケットに書き込む。

*次に、Lambda関数は、商談IDに関連付けられているContentDocumentIdについてContentDocumentLinkテーブルをクエリします。次に、この関数はContentDocumentをクエリして、getContentVersionDataに使用されるLatestPublishedVersionIdを選ぶ。 これは、「Opportunities / opp_id / ContentData / attachmentname」としてAmazon S3キーを使用してAmazon S3バケットに直接書き込まれるバッファーを返します。

Amazon Athena内のデータはすべてクエリできるので、「CREATE EXTERNAL TABLE」クエリを使用して外部テーブルを作成する。

次に、アーカイブされた商談に対してさまざまなクエリを実行する。

検証を完成させるためにSalesforceでもソースを書いてみよう。

  • Salesforce開発者コンソールで、Amazon S3ストレージコンポーネント用のLightningコンポーネントを作成する。
  • セールスコンソールで参照される商談のコンテンツを取得するためのApexコントローラを作成する。
  • コンポーネントを初期化し、ボタンをクリックしてファイルをダウンロードするためのJavascriptヘルパーを作成する。
  • 最後に、セキュリティ保護されたAmazon S3バケットにアクセスするためのセキュリティコンテキストを設定するvisualforceページを作成しました。このページでは、有効期限が非常に短いsignedURLが生成され、添付ファイルが表示された状態で別のウィンドウが開く。

  • Visualforceページは、クエリストリングをバケットとキーに設定して呼び出され、Salesforceによって保護されます。 visualforceページはJavascript用のAWS Software Developer Kit(SDK)を使用してクエリストリングを取得し、バケット名とAmazon S3キーを解析し、添付ファイル付きのページを表示するための署名付きリダイレクトURLを作成する。

この記事の範囲にはセールスフォースとAWSの連携シナリオ1まで終わらせていただきます。 次のセールスフォースとAWSの連携ブログシリーズで続いて他のシナリオも説明致します。

参照元記事:https://aws.amazon.com/jp/blogs/apn/connecting-aws-and-salesforce-enables-enterprises-to-do-more-with-customer-data/?nc1=f_ls

Posted in Apex, AWS, Salesforce, Vietnam Offshore on Dec 25, 2018