UDP → HTTP/HTTPS エントリポイント (beam.soracom.io:23080
) に、デバイスから UDP で送信された 1 パケット (厳密には 1 UDP データグラム) を、1 つの HTTP リクエストまたは HTTPS リクエストとして指定の URL に転送 (POST) します。なお、UDP → HTTP/HTTPS エントリポイントに送信されたデータは、たとえ JSON 形式のデータと同じフォーマットでも、バイナリデータとして処理されます。
送信可能なデータサイズには制限があります
1 回のデータ送信あたりの最大送信データサイズは、UDP データグラムの最大サイズに準拠します。そのため、ヘッダーを含めて 65536 バイト以上は送信できません。また、MTU (Maximum Transmission Unit。一般的には 1500 バイト) を超えるデータを送信する場合は、パケットが IP 層で分割 / 再結合される影響などで、データが転送先に届かない確率 (パケットロス率) が増加する可能性があります。HTTP エントリポイント や TCP → HTTP/HTTPS エントリポイント の利用も検討してください。
バイナリデータは JSON 形式に変換されて転送されます
バイナリデータとして処理される場合は、以下の JSON 形式に変換されたうえで転送されます。
payload
の値 (eyJs...
) は、デバイスから送信した JSON 形式のデータを Base64 形式でエンコードしたものです。これを、payload 変換と呼びます。{ "payload": "eyJsYXQiOm51bGwsImxvbiI6bnVsbCwiYmF0IjozLCJycyI6MywidGVtcCI6MTkuOSwiaHVtaSI6NDcuNiwieCI6bnVsbCwieSI6bnVsbCwieiI6bnVsbCwidHlwZSI6MX0=" }
payload 変換されたデータから元のデータを取り出すには、
payload
の値 (eYJs...
) を Base64 形式でデコードしてください。バイナリパーサー や Orbit で処理された場合は、処理後のデータが JSON 形式のデータとして UDP → HTTP/HTTPS エントリポイントに出力されるため、payload 変換は行われません。
UDP → HTTP/HTTPS エントリポイントを設定する
設定画面を表示する操作については、SORACOM Beam のエントリポイントを設定する を参照してください。UDP → HTTP/HTTPS エントリポイントで設定できる項目は以下のとおりです。
項目 | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
任意の名前を入力します。 同じ名前の設定を追加できますは、エントリポイントの一意のキーとして扱われません。ほかのエントリポイントと同じ名前を設定できます。 | |||||||||||
この設定の有効 / 無効を切り替えます。 | |||||||||||
このエントリポイントで受け付けたリクエストの転送先を設定します。
| |||||||||||
プラットフォームバージョンとして「202411」または「201509 (非推奨)」を選択します。プラットフォームバージョンについては、プラットフォームバージョン 201509 と 202411 の違い を参照してください。 | |||||||||||
転送先へのリクエストに追加するヘッダーを設定します。詳しくは、HTTP エントリポイントの [ヘッダ操作] を参照してください。 | |||||||||||
|
SORACOM CLI / SORACOM API の場合
グループ設定に Beam のエントリポイントを追加するコマンドについては、SORACOM Beam のエントリポイントを設定する の SORACOM CLI / SORACOM API の場合 を参照してください。
ここでは、UDP → HTTP/HTTPS エントリポイントを追加する場合のリクエストボディに指定する key
と value
のペアを説明します。
key | value の型 | value |
---|---|---|
udp://beam.soracom.io:23080 | Object | UDP → HTTP/HTTPS エントリポイントの Object を参照してください。 |
SORACOM CLI のコマンド例:
$ soracom groups put-config --group-id {group_id} --namespace SoracomBeam \
--body '[
{
"key": "udp://beam.soracom.io:23080",
"value": {
"name": "udp2https",
"enabled": true,
"destination": "https://beamtest.soracom.io",
"version": "202411"
"addSubscriberHeader": true,
"addSimIdHeader": false,
"addMsisdnHeader": false,
"addEquipmentHeader": false,
"addSignature": true,
"psk": {
"$credentialsId": "CredentialsID"
},
"customHeaders": {
"X-GROUP-NAME": {
"action": "append",
"headerKey": "X-GROUP-NAME",
"headerValue": "TEST"
}
},
"skipStatusCode": true
}
}
]'
SORACOM CLI や API で設定を更新するときは
Beam のエントリポイントの設定を部分的に更新するときは、更新しない設定も含めて、すべての設定を漏れなく指定してください。更新する設定だけを指定すると、省略した設定は初期値に戻ります。
想定していない値を指定した場合の動作は、定義されていません。SORACOM CLI / SORACOM API で設定を変更したあとで、SORACOM ユーザーコンソールで意図通りに設定されていることを確認してください。
UDP → HTTP/HTTPS エントリポイントの Object
以下の key と value を指定します。なお、この key と value のペアは、通常の JSON Object として指定します。
key | value の型 | value | ||||||
---|---|---|---|---|---|---|---|---|
name | String | 任意の名前を入力します。 同じ名前の設定を追加できます
| ||||||
enabled | Boolean | このエントリポイントの有効 / 無効を設定します。
| ||||||
destination | String | エントリポイントで受け付けたリクエストの転送先 (URL) を入力します。例: https://example.com:443/to/ | ||||||
version | String | プラットフォームバージョンとして以下のいずれかの値を設定します。プラットフォームバージョンについては、プラットフォームバージョン
| ||||||
addSubscriberHeader | Boolean | 転送先へのリクエストに
| ||||||
addSimIdHeader | Boolean | 転送先へのリクエストに
| ||||||
addMsisdnHeader | Boolean | 転送先へのリクエストに
| ||||||
addEquipmentHeader | Boolean | 転送先へのリクエストに
| ||||||
addSignature | Boolean | 転送先へのリクエストに
| ||||||
psk.$credentialsId | String | addSignature が true のときに、署名に利用する事前共有鍵の認証情報 IDを指定します。認証情報 ID は、認証情報ストア に事前共有鍵を登録したときに指定しています。詳しくは、署名ヘッダと事前共有鍵を使って送信元を検証する を参照してください。 | ||||||
customHeaders | Object | 転送先へのリクエストヘッダーを追加、置換、削除できます。
リクエストヘッダーは大文字小文字が区別されませんでは、大文字小文字を区別して登録できますが、一般に、リクエストヘッダーは大文字小文字が区別されません。大文字小文字を同一視した結果、同じ値になるヘッダーを複数登録した場合の動作は保証されません。 | ||||||
skipStatusCode | Boolean | レスポンスに HTTP のステータスコードを含むかを設定します。詳しくは、レスポンスのステータスコードを省略する を参照してください。
|
UDP → HTTP/HTTPS エントリポイントにリクエストする
UDP → HTTP/HTTPS エントリポイントに、デバイスからデータを送信します。
以下は、デバイスで nc コマンドを利用して、UDP → HTTP/HTTPS エントリポイント (beam.soracom.io:23080
) にデータを送信する場合の例です。例の最後の 200
は、転送先の HTTP/HTTPS サーバーが返した HTTP ステータスコードです。
$ echo "test message" | nc -v -u beam.soracom.io 23080
Connection to beam.soracom.io port 23080 [udp/*] succeeded!
200
ヘッダー操作について
デバイスが送信したデータが転送先の URL に転送される際、Beam によって以下のヘッダー操作が行われます。
user_agent: SORACOM Beam
が追加されます。- [ヘッダ操作] を参照してください。 の設定に従って、ヘッダーが追加、置換、削除されます。詳しくは、HTTP エントリポイントの
デバイスへのレスポンス
UDP には HTTP のようなリクエスト&レスポンスの概念はありません。転送先の HTTP/HTTPS サーバーが返した HTTP ステータスコードと HTTP レスポンスのボディは、以下の形式で UDP パケットのペイロードに含めてレスポンスされます。
${HTTP ステータスコード} ${転送先サーバーから返された HTTP レスポンスのボディ}
レスポンスの具体例は以下のとおりです。
転送先サーバーから、HTTP ステータスコードが
200
で、ボディがない HTTP レスポンスが返された場合の表示例:200
転送先サーバーから、HTTP ステータスコードが
200
で、ボディ (Message from server
) がある HTTP レスポンスが返された場合の表示例:200 Message from server
プラットフォームバージョン 201509
と 202411
の違い
UDP → HTTP/HTTPS エントリポイントのプラットフォームバージョンによって、デバイスへのエラーレスポンス が異なります。
Unified Endpoint は UDP → HTTP/HTTPS エントリポイントの [プラットフォームバージョン] の設定の影響を受けません
Unified Endpoint に UDP で送信した場合、Unified Endpoint のレスポンスの形式 を「SORACOM Beam」に設定しているとき (*1) は、常にプラットフォームバージョン 202411
の動作をします。
なお、このときのレスポンスは、UDP → HTTP/HTTPS エントリポイントの
の設定の影響を受けます。- (*1) Unified Endpoint のレスポンスの形式 を「Auto (デフォルト)」に設定し、さらにそのグループ設定で SORACOM Beam だけが有効なときも、同じ動作です。
デバイスへのエラーレスポンス
転送先サーバーが HTTP ステータスコード 400 以上のレスポンスを返却した場合、UDP → HTTP/HTTPS エントリポイントではエラーレスポンスとみなされます。このときデバイスには、プラットフォームバージョンに応じて定められたレスポンス形式で、UDP パケットのペイロードとして送信されます。
プラットフォームバージョン
201509
の場合:${HTTP ステータスコード} ${転送先の URL} returns a status code (${HTTP ステータスコード}). Please check your destination. ${HTTP ステータスコード} ${転送先サーバーから返された HTTP レスポンスのボディ}
1 行目と 2 行目の間には
\r\n
が含まれます。レスポンスの具体例
レスポンスの具体例は以下のとおりです。
転送先サーバーから、HTTP ステータスコードが
400
で、ボディ (Message from server
) がある HTTP レスポンスが返された場合の表示例:400 https://example.com:443/to/ returns a status code (400). Please check your destination. 400 Message from server
1 行目と 2 行目の間には
\r\n
が含まれます。転送先サーバーから、HTTP ステータスコードが
400
で、ボディ (Message from server
) がある HTTP レスポンスが返された場合の表示例 ( をオンにした場合):400 https://example.com:443/to/ returns a status code (400). Please check your destination. Message from server
1 行目と 2 行目の間には
\r\n
が含まれます。
プラットフォームバージョン
202411
の場合:${HTTP ステータスコード} ${転送先サーバーから返された HTTP レスポンスのボディ}
レスポンスの具体例
レスポンスの具体例は以下のとおりです。
転送先サーバーから、HTTP ステータスコードが
400
で、ボディ (Message from server
) がある HTTP レスポンスが返された場合の表示例:400 Message from server
転送先サーバーから、HTTP ステータスコードが
400
で、ボディ (Message from server
) がある HTTP レスポンスが返された場合の表示例 ( をオンにした場合):Message from server
エラーレスポンスに含まれるデータの違い
エラーレスポンスに含まれるデータの違いは以下のとおりです。
項目 | プラットフォームバージョン 201509 | プラットフォームバージョン 202411 |
---|---|---|
HTTP ステータスコード | あり。${HTTP ステータスコード} (半角スペースを含む) のみ省略できます。詳しくは、レスポンスのステータスコードを省略する を参照してください。 | をオンにすると、3 番目 (2 行目の先頭) の あり。レスポンスのステータスコードを省略する を参照してください。 | をオンにすると省略できます。詳しくは、
転送先の URL | あり。省略できません。 | なし。追加できません。 |
転送先サーバーから返された HTTP レスポンスのボディ | あり。省略できません。 | あり。省略できません。 |