Soracom

Users

ドキュメント

Google Cloud Pub/Sub アダプターを使用する

当ガイドでは、SORACOM Funnel (以下、Funnel) の Cloud Pub/Sub アダプターを使用し、Google Cloud にデータを送信します。

Funnel の Cloud Pub/Sub アダプター

Funnel を使用することで、デバイスに Google Cloud の認証情報や SDK をいれる必要がなくなります。Google Cloud のクレデンシャル情報とリソース URL を指定するだけで、デバイスからデータを送信することが可能となります。

ステップ 1: Google Cloud Pub/Sub を設定する 

プロジェクトの作成と設定 

Google Developers Console を開き、既存のプロジェクトを選択、または新規作成します。(ここでは新規に作成します。)

Google Developers Console プロジェクトの新規作成

作成したプロジェクトで、Pub/Sub API を有効にします。(すでに有効になっている場合は、「トピックとサブスクリプションの作成」に進んでください。) 「API を有効にする」をクリックします。

Pub/Sub API

「Google Cloud Pub/Sub API」を選択します。

Google Cloud Pub/Sub API

「有効にする」をクリックします。

Google Cloud Pub/Sub API

トピックとサブスクリプションの作成 

次に Pub/Sub のメニューからトピックとサブスクリプションを作成します。左のメニューから「Pub/Sub」から「トピック」を選択します。

トピックの作成

トピックを作成します。ここでは MyTopic としています。

Google Drive / Funnel - Google Cloud Pub/Sub + Google Cloud Functions / funnel-pubsub-setting081.png

次に作成したトピックにサブスクリプションを追加します。作成したトピックから「サブスクリプションを作成」をクリックします。

Google Drive / Funnel - Google Cloud Pub/Sub + Google Cloud Functions / funnel-pubsub-setting08.png

サブスクリプションを追加します。ここでは MySub とします。その他の設定項目はそのままに [CREATE] をクリックします。

Google Drive / Funnel - Google Cloud Pub/Sub + Google Cloud Functions / funnel-pubsub-setting09.png

メッセージのパブリッシュとサブスクライブ 

ここまでの設定で、正しくサブスクライブできることを確認します。

「トピックの名前」をクリックした後、「メッセージをパブリッシュ」をクリックします。その後表示されたフォームにメッセージ (例: Hello world!!) を入力して、「公開」をクリックします。

Google Drive / Funnel - Google Cloud Pub/Sub + Google Cloud Functions / funnel-pubsub-setting10.png

Cloud Shell を立ち上げ、以下のコマンドを実行します。

$ gcloud pubsub subscriptions pull MySub

以下のように、メッセージをうけとれれば正しく設定できています。

Google Drive / Funnel - Google Cloud Pub/Sub + Google Cloud Functions / funnel-pubsub-setting12.png

※ Cloud Shell は閉じてしまって構いません。

Funnel で使用するアカウントを作成する 

Funnel に設定する認証情報を作成します。 ここでは、Pub/Sub のパブリッシュ権限のみを割り当てます。

「IAM と管理」から「サービスアカウント」を選択します。

サービスアカウントの作成

「認証情報を作成」>「サービス アカウント」とクリックしていきます。

ここではサービスアカウント名を soracom-funnel としました。(サービスアカウント ID は自動的に設定されます。) また、ロールでは Pub/Sub パブリッシャー を選択します。

Google Drive / Funnel - Google Cloud Pub/Sub + Google Cloud Functions / funnel-pubsub-account02.png

「キーを作成」をクリックし、キーのタイプを JSON として「作成」をクリックします。このときダウンロードした JSON ファイルは紛失しないようにしてください。 戻ってきたら「完了」をクリックします。

Google Drive / Funnel - Google Cloud Pub/Sub + Google Cloud Functions / funnel-pubsub-account03.png

以上で、Pub/Sub の設定は完了です。

ステップ 2: Funnel を設定する 

次に Funnel を設定します。 まず、IoT SIM のグループを作成します。

ソラコムの ユーザーコンソール にログインします。 左上のメニューから「SIM グループ」を選択し、「+ 追加」を選択します。グループ名を指定して、グループを作成してください。

IoT SIM グループ

次に、グループの詳細画面を選択して、Funnel を設定します。 転送先サービスには「Google Cloud Pub/Sub」を指定し、転送先トピックは作成したトピック (ここでは「MyTopic」) を入力します。

認証情報は、右側の「+」をクリックして追加します。

Funnelの設定

認証情報の登録画面が表示されます。 認証情報 ID は任意に、種別は「Google Service Account (JSON)」を指定します。

Credentials では、「Funnel で使用するアカウントを作成する」でダウンロードした JSON ファイルの内容をコピー&ペーストします。

認証情報の登録

保存します。

認証情報の登録

以上で、Funnel の設定は完了です。

ステップ 3: Funnel を使用して Pub/Sub にデータを送信する 

いよいよ、Funnel を使用して、Pub/Sub にデータを送信します。

Cloud Shell を立ち上げ、以下のコマンド入力します。

$ while [ 1 ] ; do gcloud pubsub subscriptions pull --auto-ack MySub ; sleep 1 ; done

Listed 0 items. と表示されるようになったら、 SORACOM Air を使用したデバイス (例として Raspberry Pi + USB ドングル型モデムを想定します) から Publish し、Cloud Shell の Subscriber で受信します。

Raspberry Pi から以下のコマンドを実行し、HTTP リクエストを投げます。

$ curl -v -H content-type:application/json -d "{\"message\":\"Hello PubSub!\"}" funnel.soracom.io
* About to connect() to funnel.soracom.io port 80 (#0)
*   Trying 100.127.65.43...
* connected
* Connected to funnel.soracom.io (100.127.65.43) port 80 (#0)
> POST / HTTP/1.1
> User-Agent: curl/7.26.0
> Host: funnel.soracom.io
> Accept: */*
> content-type:application/json
> Content-Length: 27
>
* upload completely sent off: 27 out of 27 bytes
* additional stuff not fine transfer.c:1037: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 204 No Content
< Date: Mon, 19 Jun 2017 09:23:39 GMT
< Connection: keep-alive
<
* Connection #0 to host funnel.soracom.io left intact
* Closing connection #0

PC で以下のように Publish したデータを確認できることを確認してください。

$ while [ 1 ] ; do gcloud pubsub subscriptions pull --auto-ack MySub ; sleep 1 ; done
Listed 0 items.
Listed 0 items.
Listed 0 items.
Listed 0 items.
┌──────────────────────────────┬─────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│             DATA             │    MESSAGE_ID   │                                                                                                         ATTRIBUTES                                                                                                         │
├──────────────────────────────┼─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ {"message": "Hello PubSub!"}130810319498202credentialsId=GooglePubSub destination={"resourceUrl": "MyTopic", "service": "pubsub", "provider": "google"} imei=35316xxxxxxxxxx imsi=44010xxxxxxxxxx operatorId=OP00xxxxxxxx sourceProtocol=http timestamp=1497864219334 │
└──────────────────────────────┴─────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Listed 0 items.
Listed 0 items.

サブスクライブできない (データを確認できない) 場合は、Pub/Sub を設定する の設定、および Funnel で指定したサービスアカウントにパブリッシャー権限があることを確認してください。 また、エラーがあった場合は、コンソールから対象の SIM を選択し「ログを確認」からエラー内容を確認できます。

ログを確認

以上で、「SORACOM Funnel の Cloud Pub/Sub アダプターを使用して Google Cloud にデータを送信する」は完了です。

Funnel を使用することで、デバイスに Google Cloud の認証情報や SDK をいれることなく、Google Cloud にデータを送信できました。

当ガイドでは、デバイスは HTTP でパブリッシュしましたが、Funnel は TCP、UDP にも対応しています。Google Cloud のクレデンシャル情報とリソース URL (ここでは、Pub/Sub) を SORACOM Funnel で指定するのみで、デバイスからはシンプルなプロトコルを使用して、Google Cloud にデータを送信できます。