Soracom

Users

ドキュメント

Amazon Kinesis Data Firehose アダプターで Amazon S3 へデータ送信

当サンプルでは、AWS Cloudformation で Amazon Kinesis Data Firehose と Amazon S3 バケットを作成し、SORACOM Funnel (以下、Funnel) の Amazon Kinesis Firehose アダプターでデバイスから送信するデータを Amazon S3 に収集します。

AWS で利用するサービス

AWS のサービス群から、以下のサービスを使用します。各サービスに関する詳しい情報は、リンク先を参照してください。

データの流れ

  1. デバイスから送信されたデータは、SORACOM Funnel により受信され、IAM ロールを使用して Amazon Kinesis Data Firehose へ送信されます。
  2. Amazon Kinesis Data Firehose が受け取ったデータは Amazon S3 へ配信されます。
  3. Amazon S3 への配信時にエラーが発生した場合、エラーログが Amazon CloudWatch Logs ストリームへ記録されます。エラーログは 14 日間保持されます。

funnel設定 funnel設定

ステップ 1: AWS CloudFormation で AWS を準備する

AWS CloudFormation で AWS サービスの準備を行います。

  1. 以下のボタンをクリックして、AWS マネジメントコンソールの「スタックのクイック作成」画面を表示します。

    AWS CloudFormation テンプレートを利用する

    こちらのボタンからは東京リージョンの「スタックのクイック作成」画面が表示され、AWS リソースは東京リージョンに作成されます。

    AWS CloudFormation テンプレート

    ここで利用する AWS CloudFormation テンプレートは、ダウンロード できます。作成されるリソースについてはAWS CloudFormation スタックで作成される AWS リソースもご参照ください。

  2. 各パラメーターを入力します。[次へ] をクリックします。

    パラメーター説明
    [CoverageAWSAccountID]

    SIM グループのカバレッジに応じて以下のとおり選択します。

    • 日本カバレッジ: 762707677580
    • グローバルカバレッジ: 950858143650
    [DeliveryStreamName]配信ストリーム名を入力します。
    [IamRoleExternalIdForFunnel]

    Amazon Kinesis Data Firehose 実行用の AWS IAM ロールの外部 ID を入力します。外部 ID は認証情報ストアに登録するためメモします。

    [IamRoleNameForFunnel]Amazon Kinesis Data Firehose 実行用の AWS IAM ロールのロール名を入力します。英数字と+=,._-が利用できます。
    [S3BucketName]S3 バケット名を入力します。英小文字、数字、.-が利用できます。
  3. [AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。] にチェックを入れ、[スタックの作成] をクリックします。

    funnel設定 funnel設定

    以下のエラーが出た場合、既存の CloudFormation スタック[SoracomAwsCfnSampleFirehoseToS3]を削除してから、再度ステップ 1: AWS CloudFormation で AWS を準備するを実行してください。スタックと AWS リソースの削除はAWS リソースを削除するを参照してください。

    Stack [SoracomAwsCfnSampleFirehoseToS3] already exists
    

ステップ 2: SORACOM Funnel を設定する。

クレデンシャルの登録

SORACOM コンソールで AWS IAM ロールの認証情報を登録します。

[右上のユーザー名][セキュリティ][認証情報ストア][認証情報を登録] を選択します。

項目説明
[認証情報 ID]認証情報の名称となりますのでわかりやすい文字列を指定します。
[種別]AWS IAM ロール認証情報を指定します。
[ロール ARN]

ステップ 1: AWS CloudFormation で AWS を準備する で作成した IAM ロールの 外部 ID を入力します。

arn:aws:iam::<ご利用の AWS アカウント ID>:role/<IAM ロール名>
[外部 ID]ステップ 1: AWS CloudFormation で AWS を準備する[IamRoleExternalIdForFunnel] へ設定した外部 ID を入力します。

SORACOM Funnel を有効にする

Funnel の設定はグループに対して行います

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

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

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

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

  3. 各項目を設定します。

    項目説明
    [転送先サービス]「Amazon Kinesis Firehose」を選択
    [転送先 URL]

    データ送信先のクラウドサービスの URL を入力します。

    Amazon Kinesis Data Firehose の URL
    [認証情報]クレデンシャルの登録 で登録した AWS IAM ロール認証情報を選択
    [送信データ形式]「JSON」を選択

    funnel設定 funnel設定

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

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

    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 バケットを確認を確認します。

  1. 以下のボタンからAmazon S3 コンソールにてステップ 1: AWS CloudFormation で AWS を準備するで作成した S3 バケットを検索しクリック。

    Amazon S3 コンソールを開く

  2. 以下のように年月日時のフォルダ配下にオブジェクトが生成されています。オブジェクトを選択し[ダウンロード]をクリックしダウンロードします。

    funnel設定 funnel設定

  3. ダウンロードしたファイルにデータがあることを確認できます。

    {"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 Kinesis Data Firehose アダプターで Amazon S3 へデータ送信」は完了です。

参考

AWS CloudFormation スタックで作成される AWS リソース

ステップ 1: AWS CloudFormation で AWS を準備するで作成される AWS リソースは下記になります。

AWS リソースリソース名
Amazon Kinesis Data Firehoseステップ 1: AWS CloudFormation で AWS を準備する[DeliveryStreamName] へ設定した配信ストリーム名
S3 バケットステップ 1: AWS CloudFormation で AWS を準備する[S3BucketName] へ設定した S3 バケット名
IAM ロールステップ 1: AWS CloudFormation で AWS を準備する[IamRoleNameForFunnel] へ設定した IAM ロール名
IAM ロール<配信ストリーム名>-role
CloudWatch Logs ロググループ<配信ストリーム名>-log-group
CloudWatch Logs ログストリーム<配信ストリーム名>-log-stream

AWS リソースは AWS CloudFormation コンソールからスタック [SoracomAwsCfnSampleFirehoseToS3][リソース]タブからも確認できます。

funnel設定 funnel設定

AWS リソースを削除する

当 CloudFormation テンプレートは CloudFormation スタックを削除すると作成された AWS リソースも削除されます。AWS リソースが不要になった場合、ステップ 1: AWS CloudFormation で AWS を準備するで作成した CloudFormation スタックを削除ください。

  • AWS CloudFormation コンソールにて[SoracomAwsCfnSampleFirehoseToS3]を検索し選択。[削除]をクリックしてください。

    funnel設定 funnel設定

 

S3 バケットの削除

CloudFormation スタックで作成した S3 バケットはスタックを削除しても削除されません。S3 バケットの削除方法は AWS の以下のサイトをご覧ください。