SORACOM Developers

Getting Started

SORACOM Funnel の Cloud Pub/Sub アダプターを使用してGoogle Cloud Platformにデータを送信する

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

Funnel の Cloud Pub/Sub アダプター

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

なお、Funnel とは、デバイスからのデータを特定のクラウドサービスに直接転送するアダプターです。サポートされるクラウドサービスとそのサービスの接続先リソースを指定するだけで、データを指定のリソースに送信することができます。

Funnel概要

Funnel の詳細は 「SORACOM Funnelサービス概要ページ」、より詳細な技術仕様は「SORACOM Funnel機能詳細」をご覧ください。

当ガイドでは、以下のような流れで進めます。

  1. Pub/Sub を設定する
  2. Funnel で使用するアカウントを作成する
  3. Funnel を設定する
  4. Funnel を使用して Pub/Sub にデータを送信する

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

次に、作成したプロジェクトに認証情報(管理やサブスクライブするためのアカウント)を追加します。 API Managerの「認証情報」メニューを開き、「認証情報を作成」から「サービスアカウント」を選択します。 サービスアカウント名など必要な項目を入力します。

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

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

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

トピックの作成

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

トピックの作成

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

サブスクリプションの作成

サブスクリプションを追加します。ここでは「MySub」とします。

サブスクリプションの作成

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

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

サブスクライブは PC から確認します。事前に、SDKのインストールをしてください。SDKはGoogle Cloud SDK ドキュメントからダウンロードできます。また、サブスクリプションからのメッセージのプルを参照して、Cloud SDK コマンド コンポーネントをインストールしてください。

先ほど作成したトピックから「メッセージをパブリッシュ」をクリックします。 メッセージをパブリッシュ

メッセージを入力して、「公開」をクリックします。 メッセージをパブリッシュ

ターミナルなどから以下のコマンドを実行して、サブスクライブします。

$ gcloud alpha pubsub subscriptions pull MySub

Cloud SDK コマンド Beta コンポーネントをインストールしている場合は、以下となります。

$ gcloud beta pubsub subscriptions pull MySub

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

メッセージのサブスクライブ


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

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

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

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

サービスアカウントを作成します。サービスアカウント名など必要な項目を入力してください。

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

次に秘密鍵を生成します。ここで生成したファイルの内容を Funnel の設定で使用します。 サービスアカウントの作成

JSON形式を選択して、ファイルをダウンロードします。 サービスアカウントの作成

次に、作成したサービスアカウントに権限を割り当てます。 サービスアカウントの権限の割り当て

先に述べた通り、ここでは、「Pub/Subパブリッシャー」を選択します。 忘れずに、「追加」をクリックしてください。 サービスアカウントの権限の割り当て

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


Funnel を設定する

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

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

AirSIM グループ

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

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

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

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

認証情報の登録

保存します。 認証情報の登録

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


Funnel を使用して Pub/Sub にデータを送信する

いよいよ、Funnelを使用して、Pub/Subにデータを送信します。 ここでは、SORACOM Air を使用したデバイス(RaspberryPi)から Publish し、PC が Subscriber として受信します。

PC からターミナルなどから、以下のようにコマンドを実行します。ここでは、1秒置きに Subscribe します。

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

デバイスから以下のコマンドを実行し、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 beta pubsub subscriptions pull --auto-ack MySub ; sleep 1 ; done
┌────────────┬─────────────────┬────────────┐
│    DATA    │    MESSAGE_ID   │ ATTRIBUTES │
├────────────┼─────────────────┼────────────┤
│ Hi pubsub! │ 130833954659299 │            │
└────────────┴─────────────────┴────────────┘
Listed 0 items.
Listed 0 items.
Listed 0 items.
Listed 0 items.
┌──────────────────────────────┬─────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│             DATA             │    MESSAGE_ID   │                                                                                                         ATTRIBUTES                                                                                                         │
├──────────────────────────────┼─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ {"message": "Hello PubSub!"} │ 130810319498202 │ credentialsId=GooglePubSub destination={"resourceUrl": "MyTopic", "service": "pubsub", "provider": "google"} imei=35316xxxxxxxxxx imsi=44010xxxxxxxxxx operatorId=OP00xxxxxxxx sourceProtocol=http timestamp=1497864219334 │
└──────────────────────────────┴─────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Listed 0 items.

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

ログを確認

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

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

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

Getting Started

SORACOM Air for セルラー

SORACOM Air for LoRaWAN

SORACOM Air for Sigfox

SORACOM Beam

SORACOM Canal/Direct/Door

SORACOM Endorse

SORACOM Funnel

SORACOM Gate

SORACOM Harvest

SORACOM Inventory

SORACOM Junction

サービス機能詳細

Developer Tools

pagetop