Soracom

Users

ドキュメント
Home ドキュメント SORACOM Funnel Getting Started

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

Funnel の Google Cloud Pub/Sub アダプターを使用し、Google Cloud にデータを送信します。

Funnel の Cloud Pub/Sub アダプター Funnel の Cloud Pub/Sub アダプター

Funnel を使用すれば、デバイスに Google Cloud の認証情報や SDK をインストールする必要がありません。Google Cloud のクレデンシャル情報と転送先 URL を指定するだけで、デバイスからデータを送信できます。

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

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

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

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

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

Pub/Sub API Pub/Sub API

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

Google Cloud 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 の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. SIM グループ画面で [SORACOM Funnel 設定] をクリックします。

    SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。

  2. スイッチをクリックして「ON」にします。

  3. 転送先サービスには「Google Cloud Pub/Sub」を指定し、転送先トピックは作成したトピック (ここでは「MyTopic」) を入力します。

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

    Funnelの設定 Funnelの設定

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

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

    認証情報の登録 認証情報の登録

    保存します。

    認証情報の登録 認証情報の登録

  5. [保存] をクリックします。

  6. IoT SIM が所属するグループを切り替えます。

    IoT SIM の 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 で指定したサービスアカウントにパブリッシャー権限があることを確認してください。 また、エラーがあった場合は、ユーザーコンソールで対象の IoT SIM を選択し「ログを確認」からエラー内容を確認できます。

ログを確認 ログを確認

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

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