Soracom

Users

ドキュメント
Home ドキュメント SORACOM Beam エントリポイントリファレンス

Web サイトエントリポイント (WebSocket 対応版) (Limited Preview)

Web サイトエントリポイント (WebSocket 対応版。http://beam.soracom.io:10080) に、デバイスから送信された HTTP リクエストや WebSocket の接続リクエストを、HTTP、WS もしくは HTTPS、WSS で指定のホストに転送します。なお、送信時に指定したパスはすべてそのまま引き継がれます。デバイスの状況に応じて、転送先のパスを変更するユースケースに向いています。

Web サイトエントリポイント (WebSocket 対応版) には、転送先として 1 つのホスト (プロトコル、ホスト名、ポート番号) を設定します。たとえば、転送先としてプロトコル HTTPS、ホスト名 example.com、ポート番号 443 を指定した場合、デバイスからの送信先に応じて、Beam からの転送先が以下のように決定されます。

デバイスからの送信先Beam からの転送先
http://beam.soracom.io:10080/path1/https://example.com/path1/
http://beam.soracom.io:10080/path1/to1/https://example.com/path1/to1/
http://beam.soracom.io:18080/feedhttps://example.com/feed
http://beam.soracom.io:10080/(任意のパス)https://example.com/(任意のパス)
Web サイトエントリポイント (WebSocket 対応版) は Limited Preview です
  • WebSocket 接続時における TCP Socket の無通信タイムアウトの値は 300 秒に設定されています。
  • SORACOM のメンテナンスの影響で、TCP コネクションが切断されることがあります。
Web サイトエントリポイントと Web サイトエントリポイント (WebSocket 対応版)

Web サイトエントリポイントと Web サイトエントリポイント (WebSocket 対応版) の違いは以下のとおりです。

Web サイトエントリポイントWeb サイトエントリポイント (WebSocket 対応版)
利用申込不要必要 (サポートまでお問い合わせください)
WebSocket 対応未対応対応
エントリポイント URLhttp://beam.soracom.io:18080 または http://beam.soracom.io (80 番ポート)http://beam.soracom.io:10080
AWS 署名バージョン 4 を追加追加できる追加できない
商用環境での利用できるできない (Limited Preview 終了時に廃止されます)

Web サイトエントリポイント (WebSocket 対応版) を設定する

設定画面を表示する操作については、SORACOM Beam のエントリポイントを設定する を参照してください。Web サイトエントリポイント (WebSocket 対応版) で設定できる項目は以下のとおりです。

項目説明
[設定名]

任意の名前を入力します。

同じ名前の設定を追加できます

[設定名] は、エントリポイントの一意のキーとして扱われません。ほかのエントリポイントと同じ名前を設定できます。

[有効]この設定の有効 / 無効を切り替えます。
[転送先]

このエントリポイントで受け付けたリクエストの転送先を設定します。

項目説明
[プロトコル]

転送する際のプロトコルを選択します。

WebSocket を利用する場合も「HTTP」または「HTTPS」を選択します

たとえば、転送先 (URL) が wss://example.com:443 の場合は、「HTTPS」を選択します。

[ホスト名]転送先の FQDN (Fully Qualified Domain Name) を入力します。例: beamtest.soracom.io
[ポート番号]転送先のポート番号を入力します。例: 443
すべてのパスが転送先に引き継がれます

HTTP エントリポイントとは異なり、Web サイトエントリポイント (WebSocket 対応版) に追加したパスが、すべて転送先に引き継がれます。たとえば [ホスト]example.com を指定した場合、http://beam.soracom.io:18080/path/to/target に送信されたデータは、https://example.com/path/to/target に転送されます。

[ヘッダ操作]転送先へのリクエストに追加するヘッダーを設定します。ヘッダーの設定は、HTTP エントリポイントと同様です。詳しくは、HTTP エントリポイントの [ヘッダ操作] を参照してください。

SORACOM CLI / SORACOM API の場合

グループ設定に Beam のエントリポイントを追加するコマンドについては、SORACOM Beam のエントリポイントを設定するSORACOM CLI / SORACOM API の場合 を参照してください。

ここでは、HTTP エントリポイントを追加する場合のリクエストボディに指定する keyvalue のペアを説明します。

keyvalue の型value
http://beam.soracom.io:10080ObjectWeb サイトエントリポイント (WebSocket 対応版) の Object を参照してください。

SORACOM CLI のコマンド例:

$ soracom groups put-config --group-id {group_id} --namespace SoracomBeam \
--body '[
  {
    "key": "http://beam.soracom.io:10080",
    "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 サイトエントリポイント (WebSocket 対応版) の Object

以下の key と value を指定します。なお、この key と value のペアは、通常の JSON Object として指定します。

keyvalue の型value
nameString

任意の名前を入力します。

同じ名前の設定を追加できます

name は、エントリポイントの一意のキーとして扱われません。ほかのエントリポイントと同じ名前を設定できます。

enabledBoolean

このエントリポイントの有効 / 無効を設定します。

  • true: 有効
  • false: 無効
destinationString

エントリポイントで受け付けたリクエストの転送先 (URL) を入力します。例: https://example.com:443

WebSocket を利用する場合も http:// または https:// で始まる URL を入力します

たとえば、転送先 (URL) が wss://example.com:443 の場合は、https://example.com:443 を入力します。

addSubscriberHeaderBoolean

転送先へのリクエストに x-soracom-imsi: ${IMSI} ヘッダーを追加するかを設定します。${IMSI} には、IoT SIM の IMSI が挿入されます。

  • true: ヘッダーを追加します。
  • false: ヘッダーを追加しません。
addSimIdHeaderBoolean

転送先へのリクエストに x-soracom-sim-id: ${SIM_ID} ヘッダーを追加するかを設定します。${SIM_ID} には、IoT SIM の SIM ID が挿入されます。

  • true: ヘッダーを追加します。
  • false: ヘッダーを追加しません。
addMsisdnHeaderBoolean

転送先へのリクエストに x-soracom-msisdn: ${MSISDN} ヘッダーを追加するかを設定します。${MSISDN} には、IoT SIM の MSISDN が挿入されます。

  • true: ヘッダーを追加します。
  • false: ヘッダーを追加しません。
addEquipmentHeaderBoolean

転送先へのリクエストに x-soracom-imei: ${IMEI} ヘッダーを追加するかを設定します。${IMEI} には、デバイスの IMEI が挿入されます。

  • true: ヘッダーを追加します。
  • false: ヘッダーを追加しません。
addSignatureBoolean

転送先へのリクエストに x-soracom-signature: ${signature} ヘッダーを追加するかを設定します。${signature} には、Beam からのリクエストであることを検証するための署名が挿入されます。詳しくは、署名ヘッダと事前共有鍵を使って送信元を検証する を参照してください。

  • true: ヘッダーを追加します。
  • false: ヘッダーを追加しません。
psk.$credentialsIdStringaddSignaturetrue のときに、署名に利用する事前共有鍵の認証情報 IDを指定します。認証情報 ID は、認証情報ストア に事前共有鍵を登録したときに指定しています。詳しくは、署名ヘッダと事前共有鍵を使って送信元を検証する を参照してください。
customHeadersObject

転送先へのリクエストヘッダーを追加、置換、削除できます。

keyvalue の型value
カスタムヘッダーの名前Object

カスタムヘッダーの情報を指定します。

  • action: 以下のいずれかの値を指定します。
    • append: 転送先への HTTP リクエストに、カスタムヘッダーおよび値を追加して転送します。指定したヘッダーが存在する場合は、値は変更されません。
    • replace: 転送先への HTTP リクエストにカスタムヘッダーが存在していた場合に、その値を置換して転送します。なお、指定したヘッダーが存在しない場合は、ヘッダーと値が追加されます。
    • delete: 転送先への HTTP リクエストにカスタムヘッダーが存在していた場合に、そのカスタムヘッダーを削除して転送します。
  • headerKey: カスタムヘッダーの名前を指定します。
  • headerValue: actionappend または replace を指定した場合に、カスタムヘッダーの値を指定します。
リクエストヘッダーは大文字小文字が区別されません

[カスタムヘッダ] では、大文字小文字を区別して登録できますが、一般に、リクエストヘッダーは大文字小文字が区別されません。大文字小文字を同一視した結果、同じ値になるヘッダーを複数登録した場合の動作は保証されません。

addAuthorizationHeaderObject

転送先へのリクエストに Authorization ヘッダーを追加できます。

keyvalue の型value
enabledBoolean

転送先へのリクエストに Authorization ヘッダーを追加するかを設定します。

  • true: ヘッダーを追加します。
  • false: ヘッダーを追加しません。
typeString

Authorization ヘッダーのタイプを指定します。

  • bearer_jwt: RFC 6750 で定義されている Bearer スキームを利用するための Authorization: Bearer {token} ヘッダーを追加します。なお、{token} には、Google Service Account (JSON) または 秘密鍵 (PEM) を利用して発行された JSON Web Token (JWT) が挿入されます。
  • bearer: RFC 6750 で定義されている Bearer スキームを利用するための Authorization: Bearer {token} ヘッダーを追加します。なお、{token} には、API トークン認証情報 または 事前共有鍵 が挿入されます。
  • basic: RFC 7617 で定義されている Basic 認証を利用するための Authorization: Basic {token} ヘッダーを追加します。なお、{token} には、ユーザ名・パスワード認証情報 で設定したユーザー名とパスワードから生成された Base64 文字列が挿入されます。
configObjecttype に応じて設定内容が異なります。詳しくは、addAuthorizationHeader.config の Object を参照してください。
addAuthorizationHeader.config の Object

HTTP エントリポイントの Object のうち、addAuthorizationHeader.config の設定内容は、addAuthorizationHeader.type の設定によって異なります。

  • addAuthorizationHeader.typebearer_jwt の場合:

    keyvalue の型value
    jwtClaimsObject

    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.typebearer の場合:

    keyvalue の型value
    credentials.$credentialsId *String認証情報ストアに登録した API トークン認証情報 または 事前共有鍵 の認証情報 ID を指定します。
  • addAuthorizationHeader.typebasic の場合:

    keyvalue の型value
    credentials.$credentialsId *String認証情報ストアに登録した ユーザ名・パスワード認証情報 の認証情報 ID を指定します。

Web サイトエントリポイント (WebSocket 対応版) にリクエストする

WebSocket の接続リクエストを送信する

Web サイトエントリポイント (WebSocket 対応版) に WebSocket の接続リクエストを送信し、メッセージを送信します。Web サイトエントリポイント (WebSOcket 対応版) は、グループ設定の [SORACOM Beam 設定] → Web サイトエントリポイント (WebSocket 対応版) の [エントリポイント] に表示されています。

以下は、デバイスから Node.js"ws" npm ライブラリ を使って Web サイトエントリポイント (WebSocket 対応版) (http://beam.soracom.io:10080/) に接続して、データを送信する場合の例です。

const WebSocket = require("ws");

const url = "http://beam.soracom.io:10080";
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);
});

WebSocket 以外のリクエストを送信する

Web サイトエントリポイント (WebSocket 対応版) の挙動は HTTP エントリポイントと同じです。詳しくは、HTTP エントリポイントにリクエストする を参照してください。