SORACOM, INC.

User Console »
Getting Started

SORACOM Funnel の Kinesis Firehoseアダプターを使用してクラウドにデータを収集する(SDK版)

当ガイドでは、SORACOM Funnel(以下、Funnel)の Amazon Kinesis Firehose アダプターを使用し、デバイスから送信するデータを Amazon S3 に収集します。 Funnel の設定は、SDK を使用しています。SORACOM ユーザーコンソールを使用する場合は、SORACOM Funnel の Kinesis Firehoseアダプターを使用してクラウドにデータを収集する(ユーザーコンソール版) を参照してください。

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


はじめに

Funnel は、デバイスからのデータを特定のクラウドサービスに直接転送するクラウドリソースアダプターです。

クラウドサービス上のリソースを指定するだけで、デバイスからのデータを直接に収集できます。 SORACOM Beamとの大きな相違点は、送信先が汎用的なプロトコルではない一方で、最小限の手間で、迅速にクラウドサービスを利用することができます。

Funnel概要

なお、Funnel は コンソール、API で設定可能です。 当ガイドでは、SDK を使用します。


Amazon Kinesis Firehose の設定

まず、クラウドサービス側の Amazon Kinesis Firehose を設定します。

Amazon Kinesis Firehose の管理画面から「ストリームを作成」を選択します。

Funnel

ここでは、以下のようにDestinationとして「Amazon S3」、Delivery stream nameに「my-kinesis-firehose」を選択し、S3 bucket を選択します。

Funnel

Kinesis Firehose サービスが使用する IAM ロールを作成します。

Funnel

以下のように設定し、「Create Delivery Stream」をクリックし、Delivery Streamを作成します。

Funnel

次に、Kinesis Firehose にアクセスする IAM ユーザーを作成します。

AWS の IAM Management Console で、既存のユーザーもしくは、新規にユーザーを作成し、ポリシーをアタッチします。

以下では、Full Access をアタッチしています。 Funnel

必要に応じて、以下のような PutRecord のみのポリシーを設定することも可能です。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1452101987000",
            "Effect": "Allow",
            "Action": [
                "firehose:PutRecord",
                "firehose:PutRecordBatch"
            ],
            "Resource": [
                "arn:aws:firehose:*:000000000000:deliverystream/my-kinesis-firehose"
            ]
        }
    ]
}

ポリシーに関しては、AWS のガイドなどを参照してください。

以上で、クラウドサービス側(Amazon Kinesis Firehose)の設定は完了です。


SORACOM Funnel の設定

SORACOM側(Funnel)の設定は、以下の2つのステップで完了します。

まず、CLI(SDK) が最新であるかを確認してください。

$ gem soracom version

「Soracom API tool v1.1.0」 以降であることを確認してください。

導入方法や設定などは、SORACOM SDK for Rubyをご参照ください。

クレデンシャルの登録

Funnel を通じて利用する各種クラウドサービスの認証情報は、クレデンシャルストア機能を利用します。

AWSの場合、以下のようなフォーマットで AWS の Credential 情報を保存してください。 (ここでは、my-aws-credentials.json というファイル名で保存します。)

{
  "type": "aws-credentials",
  "credentials": {
    "accessKeyId": "AAAAAAAAAAAAAAAAAAAA",
    "secretAccessKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  },
  "description": "Kinesis Firehose"
}

以下のコマンドを実行し、上記の AWS の Credential を登録します。

$ soracom credentials create-credentials --credentials-id=my-aws-credentials --credentials-body=file://my-aws-credentials.json
{
  "description": "Kinesis Firehose",
  "type": "aws-credentials",
  "credentials": {
    "accessKeyId": "AAAAAAAAAAAAAAAAAAAA"
  },
  "credentialsId": "my-aws-credentials",
  "createDateTime": 1452790292,
  "updateDateTime": 1452790292,
  "lastUsedDateTime": null
}

上記コマンド内で指定した以下のファイルは、先ほど作成した AWS の Credential 情報のファイルです。

クラウドサービスの指定

Funnel の設定(クラウドサービスの指定)を Air SIM のグループに適用します。

設定のために、以下のようなファイルを作成してください。 (ここでは、kinesis_firehose.json というファイル名で保存します。)

{
  "destination": {
    "provider": "aws",
    "service": "firehose",
    "resourceUrl": "https://firehose.us-west-2.amazonaws.com/<Delivery stream name>"
  },
  "credentialsId": "my-aws-credentials",
  "enabled": true
}

<Delivery stream name> には、作成した Kinesis Firehose の名前を指定します。 当ガイドでは、「my-kinesis-firehose」として作成しています。

対象のグループを作成しておき、グループIDを指定して、当設定を適用します。(以下のコマンドの応答は、一部のみ表示しています。)

$ soracom group update-configuration --group-id XXXXXXXXXXXXXXXXXXXXXX --namespace SoracomFunnel --params file://kinesis_firehose.json
{
  "destination": {
    "provider": "aws",
    "service": "firehose",
    "resourceUrl": "https://firehose.us-west-2.amazonaws.com/my-kinesis-firehose"
  },
  "credentialsId": "my-aws-credentials",
  "enabled": true
}

その他のクラウドサービスの設定は、グループコンフィグレーション 詳細をご確認ください。

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


Kinesis Firehose アダプターを使用してクラウドにデータを収集する

いよいよデータを送信します。 上記で設定した グループ に属する SORACOM Air で通信を行っているデバイスから、以下のようにデータを送信します。

TCP

$ nc funnel.soracom.io 23080
{"message":"Hello SORACOM Funnel via TCP!"} [Enter]
200
[Ctrl+C]
{"operatorId": "OP0000000000", "timestamp": 1452791551499, "destination": {"resourceUrl": "https://firehose.us-west-2.amazonaws.com/my-kinesis-firehose", "service": "firehose", "provider": "aws"}, "credentialsId": "my-aws-credentials", "payloads": {"message":"Hello SORACOM Funnel via TCP!"}, "sourceProtocol": "tcp", "imsi": "440XXXXXXXXXXXX"}

UDP

$ nc -u funnel.soracom.io 23080
{"message":"Hello SORACOM Funnel via UDP!"} [Enter]
200
[Ctrl+C]
{"operatorId": "OP0000000000", "timestamp": 1452791551499, "destination": {"resourceUrl": "https://firehose.us-west-2.amazonaws.com/my-kinesis-firehose", "service": "firehose", "provider": "aws"}, "credentialsId": "my-aws-credentials", "payloads": {"message":"Hello SORACOM Funnel via UDP!"}, "sourceProtocol": "udp", "imsi": "440XXXXXXXXXXXX"}

HTTP

~$ curl -vX POST http://funnel.soracom.io -d '{"message":"Hello SORACOM Funnel via HTTP!"}' -H Content-Type:application/json
* Rebuilt URL to: http://funnel.soracom.io/
*   Trying 100.127.65.43...
* Connected to funnel.soracom.io (100.127.65.43) port 80 (#0)
> POST / HTTP/1.1
> Host: funnel.soracom.io
> User-Agent: curl/7.43.0
> Accept: */*
> Content-Type:application/json
> Content-Length: 44
>
* upload completely sent off: 44 out of 44 bytes
< HTTP/1.1 204 No Content
< Date: Thu, 14 Jan 2016 17:18:46 GMT
< Connection: keep-alive
<
* Connection #0 to host funnel.soracom.io left intact
{"operatorId": "OP0000000000", "timestamp": 1452791551499, "destination": {"resourceUrl": "https://kinesis.ap-northeast-1.amazonaws.com/my-kinesis-firehose", "service": "firehose", "provider": "aws"}, "credentialsId": "my-aws-credentials", "payloads": {"message":"Hello SORACOM Funnel via UDP!"}, "sourceProtocol": "udp", "imsi": "440XXXXXXXXXXXX"}
{"operatorId": "OP0000000000", "timestamp": 1453210349875, "destination": {"resourceUrl": "https://firehose.us-west-2.amazonaws.com/my-kinesis-firehose", "service": "firehose", "provider": "aws"}, "credentialsId": "my-aws-credentials", "payloads": {"message": "Hello SORACOM Funnel via HTTP!"}, "sourceProtocol": "http", "imsi": "440XXXXXXXXXXX"}

収集されたデータを確認する

Kinesis Firehose の出力先(Destination)として指定した S3 Bucket を確認します。 以下のようにファイルが生成されていることが確認できます。

Funnel

{"operatorId": "OP0026965167", "timestamp": 1453217753433, "destination": {"resourceUrl": "https://firehose.us-west-2.amazonaws.com/my-kinesis-firehose", "service": "firehose", "provider": "aws"}, "credentialsId": "my-aws-credentials", "payloads": {"message":"Hello SORACOM Funnel via UDP!"}, "sourceProtocol": "tcp", "imsi": "440XXXXXXXXXXXX"}
{"operatorId": "OP0026965167", "timestamp": 1453217957353, "destination": {"resourceUrl": "https://firehose.us-west-2.amazonaws.com/my-kinesis-firehose", "service": "firehose", "provider": "aws"}, "credentialsId": "my-aws-credentials", "payloads": {"message":"Hello SORACOM Funnel via HTTP!"}, "sourceProtocol": "http", "imsi": "440XXXXXXXXXXXX"}

以上で、「SORACOM Funnel の Kinesis Firehose アダプターを使用してクラウドにデータを収集する」は完了です。

Funnel を使用することで、デバイスにクラウドサービスの SDK をいれる必要はありません。 また、クラウドサービスのクレデンシャル情報をデバイスに持つ必要もありません。

クラウドサービスのクレデンシャル情報とリソースURLを指定するのみで、デバイスから直接クラウドサービスにデータを送信することが可能となりました。 お客さまは最小限の手間で、迅速にデバイスとクラウドサービスを利用したシステムを使うことができるようになります。

今後も様々な機能の追加を検討していきますので、是非ご要望をお聞かせください。 ​

はじめに

SORACOM Air for セルラー

SORACOM Air for LoRaWAN

SORACOM Air for Sigfox

SORACOM Beam

SORACOM Canal

SORACOM Endorse

SORACOM Funnel

SORACOM Gate

SORACOM Harvest

SORACOM Inventory

SORACOM Junction

pagetop