Funnel の Amazon Data Firehose アダプターを使用し、デバイスから送信するデータを Amazon S3 に保存します。
AWS STS エンドポイントをアクティブ化してください
Amazon Data Firehose アダプターを使用する場合は、AWS が提供する AWS STS エンドポイントをアクティブ化してください。詳しくは、AWS STS エンドポイントをアクティブ化してください を参照してください。
ステップ 1: Amazon Data Firehose を設定する
まず、Amazon Data Firehose と、Funnel が Amazon Data Firehose を利用するための AWS IAM ロールを設定します。
AWS マネジメントコンソール にログインし、「Kinesis」を選択して、 をクリックします。
をクリックします。
「Firehose ストリームを作成」画面が表示されます。
以下の項目を設定します。
項目 説明 「Direct PUT」を選択します。 「Amazon S3」を選択します。 Firehose ストリーム名を入力します。この Firehose ストリーム名は、これ以降、${firehose_stream_name} と表記します。例: my-kinesis-firehose01
の をクリックします。
データを保存する S3 バケットが無い場合は、先に
をクリックし、画面の指示に従って操作して、S3 バケットを作成してください。「Amazon S3 のバケットを選択する」画面が表示されます。
にデータを保存する S3 バケットの名前 (例:funnel-data-firehose-console
) を入力し、S3 バケットを選択して、 をクリックします。作成した S3 バケットが表示されない場合は、
をクリックします。[バッファ間隔] に適切な時間を設定します
Amazon Data Firehose は、データを S3 バケットに保存する前にバッファリングします。
Funnel の Amazon Data Firehose アダプターの動作確認を簡単にするために、
→ に「5」を入力することを検討してください。これは、Amazon Data Firehose にデータが届いてから 5 秒待ってから (バッファリングしてから)、まとめて S3 バケットにファイルが作成されるようにする設定です。→ の順にクリックします。
をクリックします。
IAM ロール、IAM ポリシー、および Firehose ストリームが作成され、Firehose ストリームの詳細画面が表示されます。
タブをクリックして、 の の名前をクリックします。
Firehose ストリームと同時に作成された IAM ロールの詳細画面が表示されます。
のポリシーをクリックします。
Firehose ストリームと同時に作成された IAM ポリシーの詳細画面が表示されます。
をクリックします。
をクリックして、以下の内容を入力します。
{ "Sid": "AllowPutRecordBatch", "Effect": "Allow", "Action": [ "firehose:PutRecordBatch" ], "Resource": [ "arn:aws:firehose:${region}:${your_aws_account_id}:deliverystream/${firehose_stream_name}" ] }
- ${region} には、AWS のリージョンを入力します。例:
ap-northeast-1
- ${your_aws_account_id} には、お客様の AWS アカウントの ID を入力します。例:
123456789012
- ${firehose_stream_name} には、Firehose ストリーム名を入力します。例:
my-kinesis-firehose01
- ${region} には、AWS のリージョンを入力します。例:
→ の順にクリックします。
IAM ポリシーの詳細画面に戻ります。
ポリシー名をコピーします。
続けて、Funnel が Amazon Data Firehose を利用するための AWS IAM ロールを作成します。
IAM コンソール にアクセスし、 → の順にクリックして、 をクリックします。
をクリックします。
以下の項目を設定します。
項目 説明 選択します。 SORACOM の AWS アカウント ID を入力します。SORACOM の AWS アカウントの ID は、カバレッジタイプによって異なります。
- 日本カバレッジ:
762707677580
- グローバルカバレッジ:
950858143650
チェックを入れます。 任意の文字列を入力します。
に入力した文字列は、これ以降、${external_id} と表記します。例:External-ID-CZz27ye8X7AJPGQm
外部 ID の詳細は、AWS の AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法 - AWS Identity and Access Management を参照してください。
- 日本カバレッジ:
をクリックします。
「許可を追加」画面が表示されます。
に、手順 13 でコピーしたポリシー名を入力し、ポリシーにチェックを入れて、 をクリックします。
に任意のロール名 (例:funnel-data-firehose-console-role
) を入力して、 をクリックします。ロール画面に戻ります。
に、手順 19 で入力したロール名を入力して、ロール名をクリックします。
ロールの詳細画面が表示されます。
をコピーします。
この ARN は、これ以降、${iam_role_arn} と表記します。例:
arn:aws:iam::XXXXXXXXXXXX:role/funnel-data-firehose-console-role
以上で、Amazon Data Firehose の設定は完了です。
ステップ 2: SORACOM Funnel を設定する
IoT SIM を利用するデバイスから送信されたデータを、Funnel から Amazon Data Firehose に転送するための設定を、SORACOM ユーザーコンソールで行います。
認証情報ストアに AWS IAM ロール認証情報を登録する
Funnel から Amazon Data Firehose にデータを転送するために、IAM ロールに関する認証情報を、SORACOM ユーザーコンソールの認証情報ストアに登録します。認証情報は、${iam_role_arn} および ${external_id} です。認証情報ストアの「認証情報を登録」画面の表示方法については、認証情報を登録する を参照してください。
認証情報は、以下のように登録します。
項目 | 説明 |
---|---|
認証情報を識別するために任意の名前を入力します。例: AWS-IAM-role-credentials-funnel-data-firehose | |
「AWS IAM ロール認証情報」を選択します。 | |
${iam_role_arn} を入力します。例: arn:aws:iam::XXXXXXXXXXXX:role/funnel-data-firehose-console-role | |
${external_id} を入力します。例: External-ID-CZz27ye8X7AJPGQm |
Funnel の Amazon Data Firehose アダプターを設定する
Funnel の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
スイッチをクリックして「ON」にします。
以下の項目を設定します。
項目 説明 「Amazon Data Firehose」を選択します。 Amazon Data Firehose の URL を以下のフォーマットで入力します。
https://firehose.${region}.amazonaws.com/${firehose_stream_name}
- ${region} には、AWS のリージョンを入力します。例:
ap-northeast-1
- ${firehose_stream_name} には、Firehose ストリーム名を入力します。例:
my-kinesis-firehose01
URL のルールについては、以下のページを参照してください。
認証情報ストアに AWS IAM ロール認証情報を登録する で登録した AWS IAM ロール認証情報を選択します。 「JSON」を選択します。 各項目の設定について詳しくは、SORACOM Funnel を有効化する を参照してください。
- ${region} には、AWS のリージョンを入力します。例:
をクリックします。
IoT SIM の Funnel の設定が完了しました。
ステップ 3: Funnel を使用して Amazon S3 にデータを収集する
ここでは Unified Endpoint にデータを送信します。Funnel の エントリポイント へデータを送信することもできます。
Unified Endpoint からのレスポンスには Beam や Funk のレスポンスが含まれる場合があります
Unified Endpoint に送信したデータは、IoT SIM が所属するグループの設定によっては、Funnel だけでなく、Flux、Beam、Funk、Harvest Data にも転送されます。なお、レスポンスは Unified Endpoint の設定に従い、転送されたサービス (例: Beam や Funk など) のレスポンスが含まれる場合があります。詳しくは、レスポンスの形式を設定する を参照してください。
Unified Endpoint の UDP エントリポイント (uni.soracom.io:23080
) に UDP でデータを送信します。簡単にテストする場合は、nc
コマンドが便利です。
「Funnel の Amazon Data Firehose アダプターを設定する で設定したグループに所属する IoT SIM」を利用するデバイスで、Unified Endpoint の UDP エントリポイント (
uni.soracom.io:23080
) との UDP 通信を開始します。$ nc -u uni.soracom.io 23080
続けて、
{"message":"Hello SORACOM Funnel via UDP!"}
を入力して Enter キーを押します。{"message":"Hello SORACOM Funnel via UDP!"}
Unified Endpoint の UDP エントリポイントのレスポンスが表示されます。なお、レスポンスの形式は、Unified Endpoint の レスポンスの形式を設定する を参照してください。
の設定に従います。詳しくは、例: Unified Endpoint の
で「Auto (デフォルト)」や「SORACOM Funnel」を選択した場合204
例: Unified Endpoint の
で「Unified」を選択した場合200 {"result":"ok","detail":{"SoracomFunnel":{"statusCode":204}}}
UDP 通信を終了するには、Ctrl + C キーを押します。
Funnel の UDP エントリポイントにデータを送信した場合は 200 が表示されます
{"message":"Hello SORACOM Funnel via UDP!"}
200
Unified Endpoint の TCP エントリポイント (uni.soracom.io:23080
) に TCP でデータを送信します。簡単にテストする場合は、nc
コマンドが便利です。
「Funnel の Amazon Data Firehose アダプターを設定する で設定したグループに所属する IoT SIM」を利用するデバイスで、Unified Endpoint の TCP エントリポイント (
uni.soracom.io:23080
) との TCP 通信を開始します。$ nc uni.soracom.io 23080
続けて、
{"message":"Hello SORACOM Funnel via TCP!"}
を入力して Enter キーを押します。{"message":"Hello SORACOM Funnel via TCP!"}
Unified Endpoint の TCP エントリポイントのレスポンスが表示されます。なお、レスポンスの形式は、Unified Endpoint の レスポンスの形式を設定する を参照してください。
の設定に従います。詳しくは、例: Unified Endpoint の
で「Auto (デフォルト)」や「SORACOM Funnel」を選択した場合204
例: Unified Endpoint の
で「Unified」を選択した場合200 {"result":"ok","detail":{"SoracomFunnel":{"statusCode":204}}}
TCP 通信を終了するには、Ctrl + C キーを押します。
Funnel の TCP エントリポイントにデータを送信した場合は 200 が表示されます
{"message":"Hello SORACOM Funnel via TCP!"}
200
Unified Endpoint の HTTP エントリポイント (uni.soracom.io
) に HTTP でデータを送信します。簡単にテストする場合は、curl
コマンドが便利です。
$ curl -v "http://uni.soracom.io" \
-H "Content-Type: application/json" \
-d '{
"message": "Hello SORACOM Funnel via HTTP!"
}'
例: Unified Endpoint の
で「Auto (デフォルト)」や「SORACOM Funnel」を選択した場合HTTP ステータスコードは、204 No Content です。
* Trying 100.127.69.42:80...
* Connected to uni.soracom.io (100.127.69.42) port 80 (#0)
> POST / HTTP/1.1
> Host: uni.soracom.io
> User-Agent: curl/7.88.1
> Accept: */*
> Content-Type: application/json
> Content-Length: 49
>
< HTTP/1.1 204 No Content
< Date: Wed, 23 Oct 2024 20:03:28 GMT
< Connection: close
<
* Closing connection 0
例: Unified Endpoint の
で「Unified」を選択した場合HTTP ステータスコードは、200 OK です。また、レスポンスボディがあります。
* Trying 100.127.69.42:80...
* Connected to uni.soracom.io (100.127.69.42) port 80 (#0)
> POST / HTTP/1.1
> Host: uni.soracom.io
> User-Agent: curl/7.88.1
> Accept: */*
> Content-Type: application/json
> Content-Length: 49
>
< HTTP/1.1 200 OK
< content-type: application/json
< Date: Wed, 23 Oct 2024 20:10:05 GMT
< Connection: close
< Content-Length: 61
<
* Closing connection 0
{"result":"ok","detail":{"SoracomFunnel":{"statusCode":204}}}
Funnel の HTTP エントリポイントにデータを送信した場合の HTTP ステータスコードは 204 No Content です
$ curl -v "http://funnel.soracom.io" \
-H "Content-Type: application/json" \
-d '{
"message": "Hello SORACOM Funnel via HTTP!"
}'
* 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.88.1
> Accept: */*
> Content-Type: application/json
> Content-Length: 49
>
< HTTP/1.1 204 No Content
< Date: Wed, 23 Oct 2024 20:05:28 GMT
< Connection: keep-alive
< Keep-Alive: timeout=5
<
* Connection #0 to host funnel.soracom.io left intact
ステップ 4:収集されたデータを確認する
Amazon S3 の バケット画面 にアクセスして、Amazon Data Firehose の出力先に指定した S3 バケットに、ファイルが作成されていることを確認します。
ファイルは、以下のように年、月、日、時間のフォルダの中に作成されます。
UDP で送信した場合:
{"credentialsId": "AWS-IAM-role-credentials-funnel-data-firehose", "operatorId": "OP1234567890", "destination": {"provider": "aws", "service": "firehose", "resourceUrl": "https://firehose.ap-northeast-1.amazonaws.com/my-kinesis-firehose01", "payloadsOnly": false}, "sourceProtocol": "udp", "payloads": {"message": "Hello SORACOM Funnel via UDP!"}, "timestamp": 1727736063112, "imsi": "295051234567892", "imei": "123456789012345"}
TCP で送信した場合:
{"credentialsId": "AWS-IAM-role-credentials-funnel-data-firehose", "operatorId": "OP1234567890", "destination": {"provider": "aws", "service": "firehose", "resourceUrl": "https://firehose.ap-northeast-1.amazonaws.com/my-kinesis-firehose01", "payloadsOnly": false}, "sourceProtocol": "tcp", "payloads": {"message": "Hello SORACOM Funnel via TCP!"}, "timestamp": 1727737241958, "imsi": "295051234567892", "imei": "123456789012345"}
HTTP で送信した場合:
{"credentialsId": "AWS-IAM-role-credentials-funnel-data-firehose", "operatorId": "OP1234567890", "destination": {"provider": "aws", "service": "firehose", "resourceUrl": "https://firehose.ap-northeast-1.amazonaws.com/my-kinesis-firehose01", "payloadsOnly": false}, "sourceProtocol": "http", "payloads": {"message": "Hello SORACOM Funnel via HTTP!"}, "timestamp": 1727738038660, "imsi": "295051234567892", "imei": "123456789012345"}
- データが届かない場合は、以下の点を確認してください。
- SORACOM ユーザーコンソールで エラーログ を確認してください。
- 送信したデータは、Firehose ストリームの設定によってバッファリングされます。データが届くまでに時間がかかると感じる場合は、Firehose ストリームの の設定を確認してください。
- ファイルが保存されるディレクトリは、データが保存された時間で変わります。別のディレクトリに保存されていないか確認してください。
- 連続してデータを送信した場合、データ間に区切り文字は入りません。