宏昌はじめに早いもので2017年も一ヶ月が過ぎようとしています。Piで遊んじゃいましょう。データ連携フローは下記のようなイメージです。IoTでは受け取ったデータをS3へCSVで出力S3へ出力したことをLambdaからSkyOnDemandへHTTPリクエストを送信して通知SkyOnDemadのHTTPトリガでHTTPリクエストを受け取り、S3からCSVファイルをダウンロードダウンロードしたCSVを展開しSalesforceへ書き込むわざわざS3にCSVで保存しなくても、直接jsonでSkyOnDemadへ送れば。いう声が聞こえそうですが、ここはみんな大好きCSVを経由しました。IoTを触ったのですが、UIが全く別物になっていて、かなり右往左往しました。IoTの設定は基本的に下記の手順で行います。使うと、上記1~4を順次実行できて便利です。受け取ったMQTTデータを処理するフローを定義します。ここでは、topic_2というトピック名で受け取り、S3へのPutとLambda関数の実行を定義しています。Functionは下記のようにSkyOnDemandへHTTPリクエストを送信する簡単なものです。各文字列はSkyOnDemandのHTTPトリガ作成時に作られるものです。BLOGで戸塚が詳しく書いてます。上記を使うためにはNode.jsをインストールする必要がありますが、かなり手順が多いです。途中でエラー祭りが始まり四苦八苦した結果たどり着いた手順が下記です。date-utilsマネジメントコンソールで作成した証明書は下記に置いてあげます。/home/pi/aws-iot-device-sdk-js/certsさて、いよいよ実行です。/home/pi/aws-iot-device-sdk-js/examplesにサンプルスクリプトが用意されてるので実行してみます。ap-northeast-1お!connectって出来ますね。S3にファイルは出来てるでしょうか?できてますね!中身は?json形式で吐き出されてます。CSV形式にしたいので、無理やり感はありますが、日時を付けてカンマで区切ってあげます。修正したexample.js(一部)は下記です。count}));}S3に出力するファイルの拡張子も.csvに変更します。変更は下記にて行います。Lambdaから送信されたスクリプトはSkyOnDemandで受信し、下記手順を記述したスクリプトを起動します。S3バケットからCSVを取得するCSVファイルを読み込むSalesforceのカスタムオブジェクトへInsertするイメージはこのようになります。無事にSalesforceまでデータが到達しました!今回は最終的にSalesforceへデータを保存しましたが、SkyOnDemandならば様々なアダプタが用意されているので、他のクラウドやオンプレのDBなど保存先はいろいろ選択できます。データが送られる度にSalesforceへデータをInsertしているので、SalesforceのAPIコール数をかなり消費します。本来であれば、AWSのRDSやDynamoDBにデータを溜めて、集計、解析したものをSalesforceへ連携することを考えた方がよさそうです。DynamoDBアダプタが標準装備されたり、トリガ数の制限が無くなったりさらにIoT向けのサービスになっています。Kinesisトリガが追加され、益々IoTデータ連携機能が強化されます。2016年はIoTがバズワードになりましたが、最近はAIという言葉のほうがよく聞きます。AIはビッグデータを活用するアーキテクチャであり、IoTはビッグデータを集めるための「手段」です。今回の試行のように、デバイスからクラウド、クラウドからクラウドというデータ連携ベースを一つ手の内に入れておくと今後応用が効きます。検索クラウドやるならテラスカイ。求む!Salesforce開発エンジニア。