Web サイトエントリポイント (http://beam.soracom.io:18080
または http://beam.soracom.io
(80 番ポート)) に、デバイスから送信された HTTP リクエストや WebSocket の接続リクエストを HTTP、HTTPS、WebSocket (WS) もしくは WebSocket Protocol over TLS (WSS) で指定のホストに転送します。なお、送信時に指定したパスはすべてそのまま引き継がれます。デバイスの状況に応じて、転送先のパスを変更するユースケースに向いています。
Web サイトエントリポイントには、転送先として 1 つのホスト (プロトコル、ホスト名、ポート番号) を設定します。たとえば、転送先としてプロトコル HTTPS
、ホスト名 example.com
、ポート番号 443
を指定した場合、デバイスからの送信先に応じて、Beam からの転送先が以下のように決定されます。
デバイスからの送信先 | Beam からの転送先 |
---|---|
http://beam.soracom.io:18080/path1/ | https://example.com/path1/ |
http://beam.soracom.io:18080/path1/to1/ | https://example.com/path1/to1/ |
http://beam.soracom.io:18080/(任意のパス) | https://example.com/(任意のパス) |
http://beam.soracom.io:18080/from/
に送信したデータの転送先を、異なるパス (例:/to/
) にすることはできません。- Web サイトエントリポイントは、Unified Endpoint を経由して利用できません。
- WebSocket 接続時における TCP Socket の無通信タイムアウトの値は 300 秒に設定されています。
- SORACOM のメンテナンスの影響で、TCP コネクションが切断されることがあります。
HTTP エントリポイントと Web サイトエントリポイント
HTTP エントリポイントと Web サイトエントリポイントの違いは以下のとおりです。
HTTP エントリポイント | Web サイトエントリポイント | |
---|---|---|
向いているユースケース | 1 つの URL に対してリクエストを転送するユースケース。 | デバイスの状況に応じて転送先のパスを変更するユースケース。 |
転送元 | を設定できる | - |
転送先 | 、 、 、 を設定できる | 、 、 を設定できる |
クエリパラメータ | 転送できない | 転送できる |
エントリポイントで転送できる URL の数 | 1 件 | 複数 |
WebSocket 対応 | 未対応 | 対応 |
Web サイトエントリポイントを設定する
設定画面を表示する操作については、SORACOM Beam のエントリポイントを設定する を参照してください。Web サイトエントリポイントで設定できる項目は以下のとおりです。
項目 | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|
任意の名前を入力します。 同じ名前の設定を追加できますは、エントリポイントの一意のキーとして扱われません。ほかのエントリポイントと同じ名前を設定できます。 | |||||||||
この設定の有効 / 無効を切り替えます。 | |||||||||
このエントリポイントで受け付けたリクエストの転送先を設定します。
すべてのパスが転送先に引き継がれますHTTP エントリポイントとは異なり、Web サイトエントリポイントに追加したパスが、すべて転送先に引き継がれます。たとえば | |||||||||
転送先へのリクエストに追加するヘッダーを設定します。ヘッダーの設定は、HTTP エントリポイントと同様です。詳しくは、HTTP エントリポイントの [ヘッダ操作] を参照してください。 |
SORACOM CLI / SORACOM API の場合
グループ設定に Beam のエントリポイントを追加するコマンドについては、SORACOM Beam のエントリポイントを設定する の SORACOM CLI / SORACOM API の場合 を参照してください。
ここでは、HTTP エントリポイントを追加する場合のリクエストボディに指定する key
と value
のペアを説明します。
key | value の型 | value |
---|---|---|
http://beam.soracom.io:18080 | Object | Web サイトエントリポイントの Object を参照してください。 |
SORACOM CLI のコマンド例:
$ soracom groups put-config --group-id {group_id} --namespace SoracomBeam \
--body '[
{
"key": "http://beam.soracom.io:18080",
"value": {
"name": "test",
"enabled": true,
"destination": "https://beamtest.soracom.io",
"addSubscriberHeader": true,
"addSimIdHeader": true,
"addMsisdnHeader": true,
"addEquipmentHeader": true,
"addSignature": true,
"psk": {
"$credentialsId": "CredentialsID"
},
"customHeaders": {
"X-GROUP-NAME": {
"action": "replace",
"headerKey": "X-GROUP-NAME",
"headerValue": "TEST"
}
},
"addAuthorizationHeader": {
"enabled": false
}
}
}
]'
SORACOM CLI や API で設定を更新するときは
Beam のエントリポイントの設定を部分的に更新するときは、更新しない設定も含めて、すべての設定を漏れなく指定してください。更新する設定だけを指定すると、省略した設定は初期値に戻ります。
想定していない値を指定した場合の動作は、定義されていません。SORACOM CLI / SORACOM API で設定を変更したあとで、SORACOM ユーザーコンソールで意図通りに設定されていることを確認してください。
Web サイトエントリポイントの Object
以下の key と value を指定します。なお、この key と value のペアは、通常の JSON Object として指定します。
key | value の型 | value | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
name | String | 任意の名前を入力します。 同じ名前の設定を追加できます
| ||||||||||||
enabled | Boolean | このエントリポイントの有効 / 無効を設定します。
| ||||||||||||
destination | String | エントリポイントで受け付けたリクエストの転送先 (URL) を入力します。例: WebSocket を利用する場合も http:// または https:// で始まる URL を入力しますたとえば、転送先 (URL) が | ||||||||||||
addSubscriberHeader | Boolean | 転送先へのリクエストに
| ||||||||||||
addSimIdHeader | Boolean | 転送先へのリクエストに
| ||||||||||||
addMsisdnHeader | Boolean | 転送先へのリクエストに
| ||||||||||||
addEquipmentHeader | Boolean | 転送先へのリクエストに
| ||||||||||||
addSignature | Boolean | 転送先へのリクエストに
| ||||||||||||
psk.$credentialsId | String | addSignature が true のときに、署名に利用する事前共有鍵の認証情報 IDを指定します。認証情報 ID は、認証情報ストア に事前共有鍵を登録したときに指定しています。詳しくは、署名ヘッダと事前共有鍵を使って送信元を検証する を参照してください。 | ||||||||||||
customHeaders | Object | 転送先へのリクエストヘッダーを追加、置換、削除できます。
リクエストヘッダーは大文字小文字が区別されませんでは、大文字小文字を区別して登録できますが、一般に、リクエストヘッダーは大文字小文字が区別されません。大文字小文字を同一視した結果、同じ値になるヘッダーを複数登録した場合の動作は保証されません。 | ||||||||||||
addAuthorizationHeader | Object | 転送先へのリクエストに
|
addAuthorizationHeader.config
の Object
HTTP エントリポイントの Object のうち、addAuthorizationHeader.config
の設定内容は、addAuthorizationHeader.type
の設定によって異なります。
addAuthorizationHeader.type
がbearer_jwt
の場合:key value の型 value jwtClaims
Object JSON Web Token の生成に使う情報を指定します。
例:
{ "iss": "soracom-beam@long-stack-371107.iam.gserviceaccount.com", "sub": "soracom-beam@long-stack-371107.iam.gserviceaccount.com", "aud": "https://pubsub.googleapis.com/google.pubsub.v1.Publisher" }
iat
およびexp
は、デバイスが Beam にアクセスしたときに、自動的に生成されます。credentials.$credentialsId
*String 認証情報ストアに登録した Google Service Account (JSON) または 秘密鍵 (PEM) の認証情報 ID を指定します。 algorithm
*String 署名アルゴリズムを指定します。
RS256
ES256
RS512
ES512
addAuthorizationHeader.type
がaws_sig_v4
の場合:key value の型 value service
*String geo
、lambda
、s3
、またはsagemaker
を指定します。region
*String AWS のリージョンを指定します。例: ap-northeast-1
unsignedPayload
Boolean Amazon S3 にファイルサイズが 1 MiB を超えるファイルをアップロードする可能性がある場合は、 true
を指定します。credentials.$credentialsId
*String 認証情報ストアに登録した AWS IAM ロール認証情報 の認証情報 ID を指定します。 addAuthorizationHeader.type
がbearer
の場合:key value の型 value credentials.$credentialsId
*String 認証情報ストアに登録した API トークン認証情報 または 事前共有鍵 の認証情報 ID を指定します。 addAuthorizationHeader.type
がbasic
の場合:key value の型 value credentials.$credentialsId
*String 認証情報ストアに登録した ユーザ名・パスワード認証情報 の認証情報 ID を指定します。
Web サイトエントリポイントにリクエストする
HTTP リクエストを送信する
Web サイトエントリポイントの挙動は HTTP エントリポイントと同じです。詳しくは、HTTP エントリポイントにリクエストする を参照してください。
WebSocket を利用する
Web サイトエントリポイントに WebSocket の接続リクエストを送信し、メッセージを送信します。Web サイトエントリポイントは、グループ設定の
→ Web サイトエントリポイントの に表示されています。以下は、デバイスから Node.js と "ws" npm ライブラリ を使って Web サイトエントリポイント (http://beam.soracom.io:18080/
) に接続して、データを送信する場合の例です。
const WebSocket = require("ws");
const url = "http://beam.soracom.io:18080";
const ws = new WebSocket(url);
ws.on("open", () => {
console.log("Connection opened");
ws.send("Hello, WebSocket!"); // サーバーにメッセージを送信
});
ws.on("message", (data) => {
console.log("Server:", data.toString());
ws.close(); // 応答を受け取った後、接続を閉じます
});
ws.on("close", () => {
console.log("Connection closed");
});
ws.on("error", (e) => {
console.error("Connection error: " + e.message);
});
HTTPS テストサーバーと WebSocket で通信する
SORACOM Beam の HTTPS テストサーバーは、WebSocket 通信をサポートしています。詳しくは HTTPS テストサーバーと WebSocket で通信する を参照してください。