デバイスが Funk のエントリポイントに送信したデータは、Funk によって転送先のクラウドサービスに転送されます。
- Funk から送信されるデータフォーマットは、グループ設定の で指定できます。
- Funk から送信されるデータを、転送先のクラウドサービスで取得する方法については、クラウドサービスでデータを取得する を参照してください。
- エントリポイントについて詳しくは、エントリポイント一覧 を参照してください。
- グループ設定について詳しくは、SORACOM Funk を有効化する を参照してください。
[送信データ形式] の設定について
Funk によって転送先のクラウドサービスに送信されるデータは、
の設定によって異なります。デバイスでのコマンド例:
curl -v funk.soracom.io \
-H "Content-Type: application/json" \
-d '{"hello": "funk"}'
上記のコマンドを実行して Funk にデータを送信した場合に、転送先のクラウドサービスに送信されるデータは、以下のとおりです。
の設定 | 説明 |
---|---|
(指定しない) | エントリポイントの種類によって、データの処理が異なります。
|
JSON | エントリポイントの種類に関わらず、JSON 形式のデータとして処理されます。
デバイスが、JSON 形式以外のデータを送信した場合は、 |
テキスト | エントリポイントの種類に関わらず、テキストデータとして処理されます。
|
バイナリ | エントリポイントの種類に関わらず、バイナリデータとして処理されます。(*1)
|
- (*1) 仮に JSON 形式のデータと同じフォーマットで Funk に送信した場合でも、バイナリデータとして処理されます。
バイナリデータは JSON 形式に変換されて転送されます
バイナリデータとして処理される場合は、以下の JSON 形式に変換されたうえで転送されます。
payload
の値 (eyJs...
) は、デバイスから送信した JSON 形式のデータを Base64 形式でエンコードしたものです。これを、payload 変換と呼びます。{ "payload": "eyJsYXQiOm51bGwsImxvbiI6bnVsbCwiYmF0IjozLCJycyI6MywidGVtcCI6MTkuOSwiaHVtaSI6NDcuNiwieCI6bnVsbCwieSI6bnVsbCwieiI6bnVsbCwidHlwZSI6MX0=" }
payload 変換されたデータから元のデータを取り出すには、
payload
の値 (eYJs...
) を Base64 形式でデコードしてください。バイナリパーサー や Orbit で処理された場合は、処理後のデータが JSON 形式のデータとして Funk のエントリポイントに出力されるため、payload 変換は行われません。
クラウドサービスでデータを取得する
データを受信したクラウドサービスでは、以下のようにデータを取得できます。
AWS Lambda
Python ランタイムの場合
Python ランタイムのハンドラーは、以下のとおりです。
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
event
: で指定したデータ形式に応じて値が設定されます。context
(クライアントコンテキスト): 以下のフォーマットのデータが設定されます。Python ランタイムの場合は、Python の AWS Lambda context オブジェクト 内のclient_context.custom
に以下のような JSON を元にしたdict
が設定されます。例:
{ "custom": { "operatorId": "OPXXXXXXXXXX", "coverage": "global", "resourceType": "Subscriber", "resourceId": "2950XXXXXXXXXXX", "sourceProtocol": "http", "srn": "srn:soracom:OPXXXXXXXXXX:global:Subscriber:2950XXXXXXXXXXX", "imsi": "2950XXXXXXXXXXX", "simId": "8942XXXXXXXXXXXXXXX", "imei": "8676XXXXXXXXXXX" } }
Node.js ランタイムの場合
Node.js ランタイムのハンドラーは、以下のとおりです。
exports.handler = async (event, context) => {
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
event
: で指定したデータ形式に応じて値が設定されます。context
(クライアントコンテキスト): 以下のフォーマットのデータが設定されます。Node.js ランタイムの場合は、Node.js の AWS Lambda context オブジェクト 内のclientContext
に以下のような JSON が設定されます。{ "operatorId": "OPXXXXXXXXXX", "coverage": "global", "resourceType": "Subscriber", "resourceId": "2950XXXXXXXXXXX", "sourceProtocol": "http", "srn": "srn:soracom:OPXXXXXXXXXX:global:Subscriber:2950XXXXXXXXXXX", "imsi": "2950XXXXXXXXXXX", "simId": "8942XXXXXXXXXXXXXXX", "imei": "8676XXXXXXXXXXX", "custom": { "operatorId": "OPXXXXXXXXXX", "coverage": "global", "resourceType": "Subscriber", "resourceId": "2950XXXXXXXXXXX", "sourceProtocol": "http", "srn": "srn:soracom:OPXXXXXXXXXX:global:Subscriber:2950XXXXXXXXXXX", "imsi": "2950XXXXXXXXXXX", "simId": "8942XXXXXXXXXXXXXXX", "imei": "8676XXXXXXXXXXX" } }
Azure Functions / Google Cloud Functions
以下のデータフォーマットが渡されます。
method
: 'POST' が指定されます。body
: で指定したデータ形式に応じて値が設定されます。headers
:user-agent
には 'SORACOM Funk' が指定されます。content-type
には 'application/json' が指定されます。x-soracom-token
には JWT 形式のトークンが指定されます。