当サンプルでは、AWS CloudFormation で Amazon Data Firehose と Amazon S3 バケットを作成し、SORACOM Funnel (以下、Funnel) の Amazon Data Firehose アダプターでデバイスから送信するデータを Amazon S3 に収集します。
AWS で利用するサービス
AWS のサービス群から、以下のサービスを使用します。各サービスに関する詳しい情報は、リンク先を参照してください。
- Amazon Data Firehose: ストリーミングデータ配信サービス
- Amazon S3: オブジェクトストレージ
- AWS IAM: AWS リソースへのアクセス管理
- Amazon CloudWach Logs: ロギング機能
- AWS CloudFormation: プロビジョニングツール
データの流れ
- デバイスから送信されたデータは、SORACOM Funnel により受信され、IAM ロールを使用して Amazon Data Firehose へ送信されます。
- Amazon Data Firehose が受け取ったデータは Amazon S3 へ配信されます。
- Amazon S3 への配信時にエラーが発生した場合、エラーログが Amazon CloudWatch Logs ストリームへ記録されます。エラーログは 14 日間保持されます。
ステップ 1: AWS CloudFormation で AWS を準備する
AWS CloudFormation で AWS サービスの準備を行います。
以下のボタンをクリックして、AWS マネジメントコンソールの「スタックのクイック作成」画面を表示します。
AWS CloudFormation テンプレートを利用する
このボタンをクリックすると東京リージョンの「スタックのクイック作成」画面が表示され、AWS リソースは東京リージョンに作成されます。
AWS CloudFormation テンプレート
ここで利用する AWS CloudFormation テンプレートは、ダウンロード できます。作成されるリソースについては AWS CloudFormation スタックで作成される AWS リソース も参照してください。
以下の項目を設定します。
パラメーター 説明 SIM グループのカバレッジに応じて以下のとおり選択します。
- 日本カバレッジ:
762707677580
- グローバルカバレッジ:
950858143650
配信ストリーム名を入力します。 Amazon Data Firehose 実行用の AWS IAM ロールの外部 ID を入力します。外部 ID は認証情報ストアに登録するためメモします。
外部 ID の詳細は、AWS の以下のサイトをご覧ください。
Amazon Data Firehose 実行用の AWS IAM ロールのロール名を入力します。英数字と +
、=
、,
、.
、@
、_
、-
が利用できます。S3 バケット名を入力します。英小文字、数字、 .
、-
が利用できます。- 日本カバレッジ:
にチェックを入れ、 をクリックします。
以下のエラーが出た場合、既存の CloudFormation スタックステップ 1: AWS CloudFormation で AWS を準備する を実行してください。スタックと AWS リソースの削除は AWS リソースを削除する を参照してください。
を削除してから、再度Stack [SoracomAwsCfnSampleFirehoseToS3] already exists
ステップ 2: SORACOM Funnel を設定する。
クレデンシャルの登録
SORACOM ユーザーコンソールで AWS IAM ロールの認証情報を登録します。
→ → → を選択します。
項目 | 説明 |
---|---|
認証情報の名称となりますのでわかりやすい文字列を指定します。 | |
AWS IAM ロール認証情報を指定します。 | |
ステップ 1: AWS CloudFormation で AWS を準備する で作成した IAM ロールの ARN を入力します。
| |
ステップ 1: AWS CloudFormation で AWS を準備する で へ設定した外部 ID を入力します。 |
SORACOM Funnel を有効にする
Funnel の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
スイッチをクリックして「ON」にします。
各項目を設定します。
項目 説明 「Amazon Data Firehose」を選択 データ送信先のクラウドサービスの URL を入力します。
Amazon Data Firehose の URL
Amazon Data Firehose の URL は下記 AWS ドキュメント記載のエンドポイントに配信ストリーム名をパスで続けたものになります。
東京リージョンの場合、以下のような転送先 URL となります。
https://firehose.ap-northeast-1.amazonaws.com/<配信ストリーム名>
クレデンシャルの登録 で登録した AWS IAM ロール認証情報を選択 「JSON」を選択 をクリックします。
IoT SIM の Funnel の設定が完了しました。
ステップ 3: クラウドにデータを収集する
Funnel の エントリーポイント へリクエストを送信します。
- 送信コマンド例
$ nc funnel.soracom.io 23080
{"temperature":20} [Enter]
200
[Ctrl+C]
- 送信コマンド例
$ nc -u funnel.soracom.io 23080
{"temperature":20} [Enter]
200
[Ctrl+C]
- 送信コマンド例
~$ curl -vX POST http://funnel.soracom.io -d "{\"temperature\":20}" -H Content-Type:application/json
Note: Unnecessary use of -X or --request, POST is already inferred.
* Trying 100.127.65.43:80...
* Connected to funnel.soracom.io (100.127.65.43) port 80 (#0)
> POST / HTTP/1.1
> Host: funnel.soracom.io
> User-Agent: curl/7.74.0
> Accept: */*
> Content-Type:application/json
> Content-Length: 18
>
* upload completely sent off: 18 out of 18 bytes
* Mark bundle as not supporting multiuse
< HTTP/1.1 204 No Content
< Date: Fri, 28 Oct 2022 12:54:03 GMT
< Connection: keep-alive
< Keep-Alive: timeout=5
<
* Connection #0 to host funnel.soracom.io left intact
ステップ 4:収集されたデータを確認する
ステップ 1: AWS CloudFormation で AWS を準備する で作成した S3 バケットを確認を確認します。
以下のボタンから Amazon S3 コンソールで ステップ 1: AWS CloudFormation で AWS を準備する で作成した S3 バケットを検索しクリック。
以下のように年月日時のフォルダ配下にオブジェクトが生成されています。オブジェクトを選択し
をクリックしダウンロードします。ダウンロードしたファイルにデータがあることを確認できます。
{"operatorId": "OP00XXXXXXXX", "timestamp": 1666961643739, "destination": {"provider": "aws", "service": "firehose", "resourceUrl": "https://firehose.ap-northeast-1.amazonaws.com/XXXXXXXX", "payloadsOnly": false}, "credentialsId": "XXXXXXXX", "payloads": {"temperature": 20}, "sourceProtocol": "tcp", "imsi": "440XXXXXXXXXXXX", "imei": "XXXXXXXXXXXXXXX"} {"operatorId": "OP00XXXXXXXX", "timestamp": 1666961643739, "destination": {"provider": "aws", "service": "firehose", "resourceUrl": "https://firehose.ap-northeast-1.amazonaws.com/XXXXXXXX", "payloadsOnly": false}, "credentialsId": "XXXXXXXX", "payloads": {"temperature": 20}, "sourceProtocol": "udp", "imsi": "440XXXXXXXXXXXX", "imei": "XXXXXXXXXXXXXXX"} {"operatorId": "OP00XXXXXXXX", "timestamp": 1666961643739, "destination": {"provider": "aws", "service": "firehose", "resourceUrl": "https://firehose.ap-northeast-1.amazonaws.com/XXXXXXXX", "payloadsOnly": false}, "credentialsId": "XXXXXXXX", "payloads": {"temperature": 20}, "sourceProtocol": "http", "imsi": "440XXXXXXXXXXXX", "imei": "XXXXXXXXXXXXXXX"}
以上で、「Amazon Data Firehose アダプターで Amazon S3 へデータ送信」は完了です。
参考
AWS CloudFormation スタックで作成される AWS リソース
ステップ 1: AWS CloudFormation で AWS を準備する で作成される AWS リソースは以下のとおりです。
AWS リソース | リソース名 |
---|---|
Amazon Data Firehose | ステップ 1: AWS CloudFormation で AWS を準備する で へ設定した配信ストリーム名 |
S3 バケット | ステップ 1: AWS CloudFormation で AWS を準備する で へ設定した S3 バケット名 |
IAM ロール | ステップ 1: AWS CloudFormation で AWS を準備する で へ設定した IAM ロール名 | IAM ロール | <配信ストリーム名>-role |
CloudWatch Logs ロググループ | <配信ストリーム名>-log-group | CloudWatch Logs ログストリーム | <配信ストリーム名>-log-stream |
AWS リソースは、AWS CloudFormation コンソールのスタック
の タブでも確認できます。
AWS リソースを削除する
当 CloudFormation テンプレートは CloudFormation スタックを削除すると作成された AWS リソースも削除されます。AWS リソースが不要になった場合、ステップ 1: AWS CloudFormation で AWS を準備する で作成した CloudFormation スタックを削除ください。
AWS CloudFormation コンソールで
を検索し選択。 をクリックしてください。S3 バケットの削除
CloudFormation スタックで作成した S3 バケットはスタックを削除しても削除されません。S3 バケットの削除方法は AWS の バケットの削除 - Amazon Simple Storage Service を参照してください。