GCP と組み合わせる
SORACOM LTE-M Button と Google Cloud Platform(以下、GCP) を連携させる方法は 2 種類あります。
ボタンと Google Cloud Functions 連携をすばやく構築したい ― SORACOM Funk + Google Cloud Functions パターン
ボタンと Google Cloud Functions 連携をすばやく構築したい場合は、 SORACOM Funk から Cloud Functions を呼び出すパターンを利用します。
手順
ここでは Cloud Functions で Webhook (HTTP トリガー) を作成し、 SORACOM Funk から呼び出せるように構成する手順を解説します。
1. 関数を作成する
GCP ダッシュボードのナビゲーションメニューから “Cloud Functions” を探してクリック、その後に [関数の作成] をクリックします。 ※ “API が有効になっていません” と表示される場合は [API を有効にする] をクリックしてから [関数の作成] に進んでください。
表示されるダイアログに以下のように入力した後、[作成] をクリックします。
- 名前:
button-app1-DuHiex2ezieVoon9
(後半のランダムな文字列は 16 文字程度を付与することを推奨します) - 割り当てられるメモリ: 256 MB
- トリガー: HTTP
- 未認証の呼び出しを許可する:
- ソースコード: インライン エディタ
- ランタイム: Node.js 8
- index.js: 下記 JS のように書き換え
- 実行する関数:
helloWorld
※ TIPS: ランダムな文字列は pwgen in JavaScript といったツールを活用すると便利です。
/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.helloWorld = (req, res) => {
console.log(req.headers);
console.log(req.body);
res.status(204).end();
};
作成した関数をクリックし [トリガー] タブをクリックして表示された URL をメモしておきます。
2. SORACOM Funk の設定を行う
SORACOM ユーザーコンソール の SIM グループの管理画面から “SORACOM Air for Cellular 設定” で [バイナリパーサー設定] を “ON” にした後、以下のように入力してから [保存] をクリックします。 ※ SIM グループを作成していない場合は作成した上で、ボタンの SIM に割り当てておいてください。
- フォーマット:
@button
同じ SIM グループの管理画面から “SORACOM Funk 設定” を “ON” にした後に表示されるダイアログで以下のように入力します。
- サービス: Googl Cloud Functions
- 送信データ形式: JSON
- 関数の URL: (先ほどメモをした URL)
以上で設定はすべて終了です。
3. 動作確認
確認は Cloud Functions の管理画面で行います。関数の管理画面から [ログを表示] をクリックします。 ※ “新しいログを読み込む” をクリックして適宜最新の情報に更新してください
4. トラブルシュート
- LTE-M Button の LED が最終的に赤色点灯になる
- A: LTE-M Button が SIM グループに所属していることを確認してください。
- B: SIM グループ内の Google Cloud Functions に対する URL 設定を確認してください。
- C: Google Cloud Functions 以降の設定を見直すようにしてください。
{ "payload":"TQEDUQ==" }
のように読めない文字列になっている- SORACOM Air for Cellular 設定のバイナリパーサーで
@button
を設定するようにしてください。
- SORACOM Air for Cellular 設定のバイナリパーサーで
5. この後の開発に向けた情報源
- Google Cloud Functions 関連
- SORACOM LTE-M Button 関連
payloads
の内容は 送信するデータフォーマット をご覧ください。
SORACOM Funnel + Google Cloud Pub/Sub パターン
関数の保護を手軽に実現したい、もしくは、大量のデータストリームの処理を必要とするアプリケーションを構築したい場合は、 SORACOM Funnel から Google Cloud Pub/Sub を通じて Google Cloud Functions を利用する方法があります。
手順
ここでは Google Cloud Pub/Sub から Google Cloud Functions への連携部分について追加で解説します。
1. Google Cloud Pub/Sub を作成する
Getting Started: Google Cloud Pub/Sub アダプターを使用する | SORACOM Funnel | SORACOM Users の 1. Pub/Sub を設定する と 2. Funnel で使用するアカウントを作成する を行ってください。
内容としては以下の通りです。
- Cloud Pub/Sub の API を有効にする
- Cloud Pub/Sub に Publish できるサービスアカウントを “API/とサービス > 認証情報” で作成する
- 本ガイドでは
soracom-funnel-pubsub-user1
というサービスアカウント名を作成し、JSON 形式の認証情報を取得しておきます。
- 本ガイドでは
- Cloud Pub/Sub を作成する
- 本ガイドでは
button-topic1
というトピック名とします。
- 本ガイドでは
2. 関数を作成する
GCP ダッシュボードのナビゲーションメニューから “Cloud Functions” を探してクリック、その後に [関数の作成] をクリックします。 ※ “API が有効になっていません” と表示される場合は [API を有効にする] をクリックしてから [関数の作成] に進んでください。
表示されるダイアログに以下のように入力した後、[作成] をクリックします。
- 名前:
button-app1-DuHiex2ezieVoon9
(後半のランダムな文字列は 16 文字程度を付与することを推奨します) - 割り当てられるメモリ: 256 MB
- トリガー: Cloud Pub/Sub
- トピック: 末尾が /topics/button-topic1 となっているもの
- 未認証の呼び出しを許可する:
- ソースコード: インライン エディタ
- ランタイム: Node.js 8
- index.js: 下記 JS のように書き換え
- 実行する関数:
helloPubSub
※ TIPS: ランダムな文字列は pwgen in JavaScript といったツールを活用すると便利です。
/**
* Triggered from a message on a Cloud Pub/Sub topic.
*
* @param {!Object} event Event payload.
* @param {!Object} context Metadata for the event.
*/
exports.helloPubSub = (event, context) => {
console.log(event.attributes);
console.log(Buffer.from(event.data, "base64").toString());
};
3. SORACOM Funnel の設定を行う
SORACOM ユーザーコンソール の SIM グループの管理画面から “SORACOM Air for Cellular 設定” で [バイナリパーサー設定] を “ON” にした後、以下のように入力してから [保存] をクリックします。 ※ SIM グループを作成していない場合は作成した上で、ボタンの SIM に割り当てておいてください。
- フォーマット:
@button
これ以降は Getting Started: Google Cloud Pub/Sub アダプターを使用する | SORACOM Funnel の 3. Funnel を設定する を行ってください。 ※ 4. Funnel を使用して Pub/Sub にデータを送信する はスキップしてください
SORACOM Funnel 設定の際には以下に注意してください
- トピック名は
button-topic1
を使用します。 - 認証情報は
soracom-funnel-pubsub-user1
というアカウント名に紐づく JSON 形式の認証情報を利用してください。
4. 確認
確認は Google Cloud Functions で行います。関数の管理画面から [ログを表示] をクリックします。 ※ “新しいログを読み込む” をクリックして適宜最新の情報に更新してください
5. トラブルシュート
- LTE-M Button の LED が最終的に赤色点灯になる
- A: LTE-M Button が SIM グループに所属していることを確認してください。
- B: SORACOM Air for Cellular 設定のバイナリパーサーを ON にした上で フォーマットに
@button
が設定されているか確認してください。 - C: Google Cloud Pub/Sub 以降の設定を見直すようにしてください。
- サービスアカウントに Pub/Sub パブリッシャー権限 が付与されている必要があります
6. この後の開発に向けた情報源
- GCP 関連
- SORACOM LTE-M Button 関連
payloads
の内容は リファレンス: 送信するデータフォーマット | SORACOM LTE-M Button for Enterprise ユーザーガイド をご覧ください。
- SORACOM Funnel 関連
- 保存された認証情報は SORACOM ユーザーコンソールの [Menu] > [セキュリティ] > [認証情報ストア] に保存されており、ここから追加・編集・削除といった管理が可能です。
- SOARCOM Funnel から送信される JSON の内容については リファレンス: 送信するデータフォーマット | SORACOM Funnel をご覧ください。