Amazon Lambdaというすんばらしいサービスがプレビュー提供されたということでApexから触ってみた。

 

1. Lambda側のfunctionを書く

今回はChatter投稿するようなスクリプトを書いてみた。

上記スクリプトをindex.jsとして保存する。

必要なパッケージもローカルインストールしておく。今回はjsforceのみ。

2. 作成したLambda functionをアップロードする

node_modulesと対象のスクリプトファイルをまとめてzipファイルにする。

で、アップロードする。

AWS Lambda

Function Name, Description→適当に

Function Code→生成したZipファイルをアップロード。File nameとHandler nameはそのまま。

Role name→Functionの実行コンテキストになるロールを指定する。Create/Select Roleで作成・指定すればOK。

Advanced Settings→一回あたりのFunction実行の利用可能なメモリやタイムアウト時間を適当にセット。

3. 動作確認

作成したLambda Functionが正しく動作するかを確認する。

まずは確認対象のLambda Functionを選択してEdit/Testをクリック。

lambda_select

Customを選択して適当なJSONをセットしてInvokeをクリック

AWS Lambda_Test

下の方のExecution resultsにログが出るので確認。

lambda_test

日本語が???とかに文字化けてますが、CloudWatch側のログにはちゃんと残ってます。

CloudWatchで見る場合はLogsから対象のFunctionを選択して掘り下げていくとログが見れます。

lambda_log_list

lambda_log

4. Lambdaを呼び出すApexクラスを作成

現時点ではLambdaのドキュメントにはREST APIの仕様があまり書かれていないっぽくて

Signature Versionがどれに対応しているかとかよくわからなかったんですが、

JavascriptのSDK見たらSignatureのVersion指定のパラメータで

v2,v3,v4が指定できる的なことが書いてあったのでv4で実装してみたら、普通に呼び出せました!

Signature Version4での生成方法はこちら

 

で、いつも通り汚い感じですが、Apexで書くとこんな感じ↓

ApexでのSignature Version4の生成方法は過去の記事を参照ください!

リモートサイトの設定も忘れずに。

lambda_remotesite

あとは普通に呼び出すだけ!

で、Chatterを開くと…

lambda_chatter

Good!!

 

今回のサンプルだとApex→Lambda→Chatterというフローになっていて

Lambda経由のChatter投稿という意味なさげな感じになっていますが

実際にSalesforceで連携するときのユースケースとしては

S3にアップロードされたらChatterFeed作ってあげたり、他のSFDCのAPIを叩いたり

ApexトリガでDML走る度にLambda function動かすとか、そういった使い方になると思います。

 

一日しか触ってないですが、サーバ立てたりオートスケールの設定無しで

スケールするファンクションを簡単に作れるのは、非常に強力だなーと思いました。