SORACOM funnelを利用して、AWSのKinesis Firehoseと連携した時のメモです。
SORACOM funnelとは
SORACOM funnelとは、
Funnelは、デバイスからのデータを特定のクラウドサービスに直接転送するアダプターです。
クラウドサービス上のリソースを指定するだけで、デバイスからのデータを直接に収集できます。 SORACOM Beamとの大きな相違点は、送信先が汎用的なプロトコルではない一方で、最小限の手間で、迅速にクラウドサービスを利用できます。
Kinesis Firehoseと連携する場合の手順を、WEB上で公開してくれています。この内容を参考に作業を進めていきます。
SORACOM Funnel の Kinesis Firehoseアダプターを使用してクラウドにデータを収集する(SDK版)
AWS側作業
まず、データを受け取るAWS側設定を実施します。
kinesis Firehoseの作成
S3BucketをDestinationとするKinesis Firehoseを作成します。詳細は割愛。該当するCloudFormationテンプレートを置いておきます。
Kinesis Firehoseアクセス用のIAMユーザの作成
今後の手順にて、SORACOM側へFirehoseのStreamにアクセスできるIAM情報を登録することになります。そのためのIAMユーザを作成して、アクセスキー・シークレットキーを取得しておきます。
下記がIAMユーザに付与したIAMポリシー。Resource対象を作成したDelivery Streamに絞って、Streamの作成/削除権限だけを外しています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:DescribeDeliveryStream", "firehose:PutRecord", "firehose:StartDeliveryStreamEncryption", "firehose:PutRecordBatch", "firehose:StopDeliveryStreamEncryption", "firehose:ListTagsForDeliveryStream", "firehose:TagDeliveryStream", "firehose:UpdateDestination", "firehose:UntagDeliveryStream" ], "Resource": "arn:aws:firehose:ap-northeast-1:XXXXXXXXXXXX:deliverystream/delivery_stream_name" }, { "Effect": "Allow", "Action": "firehose:ListDeliveryStreams", "Resource": "*" } ] }
SORACOM側作業
ここからはSORACOM側作業です。soracom-cliを利用して設定を進めます。
認証情報ストアに認証情報を登録
上記で作成したIAMユーザのクレデンシャル情報を、以下のようなJSONファイルにまとめます。
{ "type": "aws-credentials", "credentials": { "accessKeyId": "AKIXXXXXXXXXXXXXXXX", "secretAccessKey": "4UuXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }, "description": "arn:aws:iam::XXXXXXXXXXXX:user/soracom-kinesis-user" }
soracom credentials create
コマンドにて、クレデンシャル情報を登録します。下記がサンプルコマンド。
$ soracom credentials create \ --credentials-id aws-credential-name \ --body @my-aws-credentials.json
CLIでのヘルプ内容。
$ soracom credentials create --help Creates a new credential. Usage: soracom credentials create [flags] Flags: --body string JSON string or @filename for API request body. --credentials-id string credentials_id --description string -h, --help help for create --type string
IoT SIMグループの作成
Kinesis Firehoseと連携したいSIMを管理するSIMグループを作成します。既に適当なSIMグループが存在する場合、本手順はスキップできます。
作成したいグループ名を定義した、以下のようなJSONファイルを作成します。
my-sim-group.json
{ "tags": { "name": "test-group" } }
soracom groups create
コマンドにて、新規グループを作成します。
$ soracom groups create \
--body @my-sim-group.json
CLIでのヘルプ内容。
$ soracom groups create --help Create a new group. Usage: soracom groups create [flags] Flags: --body string JSON string or @filename for API request body. -h, --help help for create
SORACOM funnelの設定(クラウドサービスの指定)
上で作成したSIMグループにて、SORACOM funnelの設定を行います。
今回作成したKinesis Firehoseの情報、SORACOM認証情報ストアに登録した認証情報を、以下のようなJSONファイルにまとめます。
[ { "key": "contentType", "value": "json" }, { "key": "credentialsId", "value": "aws-credential-name" }, { "key": "destination", "value": { "provider": "aws", "resourceUrl": "https://firehose.ap-northeast-1.amazonaws.com/sample", "service": "firehose" } }, { "key": "enabled", "value": true } ]
soracom groups put-config
コマンドにて、設定を実施します。
$ soracom groups put-config \ --group-id 5e919356-XXXX-XXXX-XXXX-XXXXXXXXXXXX \ --namespace SoracomFunnel \ --body @my-kinesis-firehose.json
CLIでのヘルプ内容。
$ soracom groups put-config --help Adds/updates parameters for the specified group. Usage: soracom groups put-config [flags] Flags: --body string JSON string or @filename for API request body. --group-id string Target group. -h, --help help for put-config --namespace string Target configuration.
利用するSIMをSIMグループに参加させる
諸々設定してきたSIMグループに、今回利用するSORACOM SIMを参加させます。以下のように、 soracom subscribers set-group
コマンドを実行。
$ soracom subscribers set-group \ --imsi 440XXXXXXXXXXXX \ --group-id 5e919356-XXXX-XXXX-XXXX-XXXXXXXXXXXX
CLIでのヘルプ内容。
$ soracom subscribers set-group --help Sets or overwrites a group for the specified subscriber. Usage: soracom subscribers set-group [flags] Flags: --body string JSON string or @filename for API request body. --group-id string -h, --help help for set-group --imsi string IMSI of the target subscriber.
疎通テスト
設定したfunnel経由にて、Kinesis Firehoseと連携し、S3上にファイルが作成されることを確認します。今回はPCをSORACOMネットワークに接続し、NetcatコマンドにてTCPパケットを送信してみます。
PCをSORACOMネットワークに接続する方法は、下記の以前の投稿より。
Netcatコマンド(nc)のサンプルは下記。
$ nc funnel.soracom.io 23080 {"message":"Hello SORACOM Funnel via TCP!"}
S3上にファイル作成されることを確認します。