Soracom

Users

ドキュメント
Home ドキュメント SORACOM Beam Amazon Web Service (AWS) に送信する

IAM 認証を利用して Amazon Location Service の Tracking にリクエストを送信する

お客様の AWS アカウントにある Amazon Location Service の Tracking (以下、Tracking) へのデータ送信を、Beam が動作する SORACOM の AWS アカウントにのみ許可できます。

Beam を使用することで、以下のようなメリットがあります。

  • Tracking にデータを送信するための認証情報を、デバイスにインストールする必要がありません。
  • デバイスでは、Beam のエントリポイントを指定してアクセスするだけで、Tracking に位置情報などのデータを送信できます。AWS API リクエストの署名 で説明されている署名バージョン 4 の署名プロセスをデバイスで行う必要はありません。
HTTP エントリポイントは利用できません

Tracking にデータを送信したり取得したりする場合は、HTTP エントリポイントは利用できません。このページに書かれているとおり、Web サイトエントリポイントを利用してください。

ステップ 1: IAM ポリシーと IAM ロールを作成する

Beam の Web サイトエントリポイントが、お客様の AWS アカウントの Amazon Location Service の Tracking にリクエストを送信するために、お客様の AWS アカウントに以下の設定の IAM ポリシーと IAM ロールを作成します。操作手順について詳しくは、IAM ポリシーと IAM ロールを作成する を参照してください。

項目説明
IAM ポリシー

このページで説明する機能を体験するために、お客様の AWS アカウントの AWS Lambda の関数 URL を呼び出す権限を追加します。

具体的には以下のように設定します。

  • [サービス]: 「Location」を選択します。

  • [アクション]: 以下の権限にチェックを入れます。

    • [GetDevicePositionHistory]
    • [TagResource]
    • [BatchUpdateDevicePosition]
    • [CreateTracker]
    • [UpdateTracker]
  • [リソース]: [tracker] の「ARN を指定」画面で以下のように設定します。

    [Resource tracker name][任意の tracker name] にチェックを入れます。

IAM ロール

SORACOM の AWS アカウントを、信頼できるエンティティとして指定します。

  • 信頼できるエンティティ (IAM ロールの利用を許可する AWS アカウント): SORACOM の AWS アカウント。カバレッジタイプによって異なります。
  • 外部 ID の要求: IAM ロールを利用する際に外部 ID (任意の文字列) を要求し、セキュリティを強化します。IAM ロールごとに異なる文字列を指定してください。これ以降、${external_id} と表記します。例: External-ID-tsqTJAB7LvQe0JtF
  • アタッチする IAM ポリシー: このページで作成する IAM ポリシー。

なお、ここで作成した IAM ロールの ARN を、これ以降、${iam_role_arn} と表記します。例: arn:aws:iam::XXXXXXXXXXXX:role/beam-tracker-role

ステップ 2: SORACOM Beam をセットアップする

Beam の Web サイトエントリポイントを設定します。ここで説明するとおりに設定すると、以下の機能が実現できます。

  • IoT SIM を利用するデバイスから送信されたデータを Beam から Tracking に転送する。
  • IoT SIM を利用するデバイスで Tracking に保存されているデータを取得したりする。

認証情報ストアに AWS IAM ロール認証情報を登録する

Beam から Tracking を利用するために、IAM ロールに関する認証情報を、SORACOM ユーザーコンソールに登録します。

具体的には、認証情報ストアの「認証情報を登録」画面で以下のように登録します。この画面の表示方法については、認証情報を登録する を参照してください。

項目説明
[認証情報 ID]認証情報を識別するために任意の名前を入力します。例: AWS-IAM-role-credentials-tracker
[種別]「AWS IAM ロール認証情報」を選択します。
[ロール ARN]${iam_role_arn} を入力します。例: arn:aws:iam::XXXXXXXXXXXX:role/beam-tracker-role
[外部 ID]${external_id} を入力します。例: External-ID-tsqTJAB7LvQe0JtF

Beam の Web サイトエントリポイントを設定する

Beam の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. SIM グループ画面で [SORACOM Beam 設定] をクリックします。

    SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。

  2. [+設定を追加する][Web サイトエントリポイント] の順にクリックします。

    「SORACOM Beam - Web サイト転送設定」画面が表示されます。

  3. 以下のように設定します。

    項目説明
    [設定名]任意の設定名 (例: Amazon Location Service Tracking) を入力します。
    [転送先][プロトコル]「HTTPS」を選択します。
    [転送先][ホスト名]tracking.geo.${Amazon Location Service のリージョン}.amazonaws.com を入力します (例: tracking.geo.ap-northeast-1.amazonaws.com)。
    [転送先][ポート番号]空欄のままにします。
    [ヘッダ操作][Authorization ヘッダ]

    オンにして、以下のように設定します。

    • [タイプ]: 「AWS Signature V4」を選択します。
    • [サービス]: 「geo」(Amazon Location Service) を選択します。
    • [リージョン]: Amazon Location Service のリージョンを選択します。
    • [認証情報 ID]: 認証情報ストアに AWS IAM ロール認証情報を登録する で登録した AWS IAM ロール認証情報を選択します。

    Web サイトエントリポイント Web サイトエントリポイント
    Web サイトエントリポイント Web サイトエントリポイント

    Web サイトエントリポイントの設定値の意味は、Web サイトエントリポイント を参照してください。

  4. [保存] をクリックします。

  5. IoT SIM が所属するグループを切り替えます。

    IoT SIM の Beam の設定が完了しました。

Air のメタデータサービスを有効化する

このあとの手順で、デバイスから Tracking にデータを送信する際、Air のメタデータサービスを利用します。そのため、IoT SIM が所属するグループで、Air のメタデータサービスを有効化してください。詳しくは、メタデータサービスを設定する を参照してください。

項目説明
[メタデータサービス]オンにします。

ステップ 3: Web サイトエントリポイントを使用して Tracking にデータを送信する

Beam の Web サイトエントリポイントを使用して、Tracking に位置情報を送信したり、受信したりできます。

トラッカーを作成する

Tracking に beam-tracker という名前のトラッカーを作成します。

  1. デバイスに、requests パッケージ をインストールします。

    $ pip install requests
    
  2. デバイスに、create_tracker.py をダウンロードします。

    create_tracker.py はサンプルスクリプトです

    create_tracker.py は、メタデータサービスを利用して IMSI を取得し、Tracking に beam-tracker という名前の新しいトラッカーを作成するサンプルスクリプトです。

  3. デバイスで以下のコマンドを実行して、トラッカーを作成します。

    $ python create_tracker.py
    
    8942XXXXXXXXXXXXXXX
    {'TrackerName': 'beam-tracker', 'TrackerArn': 'arn:aws:geo:ap-northeast-1:XXXXXXXXXXXX:tracker/beam-tracker', 'CreateTime': '2023-01-11T12:20:04.118Z'}
    

データを送信する

  1. デバイスに、send_locations.py をダウンロードします。

    send_locations.py はサンプルスクリプトです

    send_locations.py は、メタデータサービスを利用して IMSI を取得し、Tracking の beam-tracker という名前のトラッカーに対して、2 秒間隔で 3 つの固定の位置情報を送信するサンプルスクリプトです。

  2. デバイスで以下のコマンドを実行して、3 つの位置情報を送信します。

    $ python send_locations.py
    

データを取得する

  1. デバイスに、get_locations.py をダウンロードします。

    get_locations.py はサンプルスクリプトです

    get_locations.py は、メタデータサービスを利用して IMSI を取得し、Tracking の beam-tracker という名前のトラッカーから過去 3 日間の位置情報を取得するサンプルスクリプトです。

  2. デバイスで以下のコマンドを実行して、位置情報を取得します。

    $ python get_locations.py
    
    {'DevicePositions': [{'DeviceId': 'beam-tracker-8942XXXXXXXXXXXXXXX', 'SampleTime': '2023-01-19T09:50:09.933Z', 'ReceivedTime': '2023-01-19T09:50:13.177Z', 'Position': [139.7583, 35.6664], 'Accuracy': {'Horizontal': 1}}, {'DeviceId': 'beam-tracker-8942XXXXXXXXXXXXXXX', 'SampleTime': '2023-01-19T09:50:15.951Z', 'ReceivedTime': '2023-01-19T09:50:16.522Z', 'Position': [139.7501, 35.6701], 'Accuracy': {'Horizontal': 1}}, {'DeviceId': 'beam-tracker-8942XXXXXXXXXXXXXXX', 'SampleTime': '2023-01-19T09:50:18.733Z', 'ReceivedTime': '2023-01-19T09:50:19.3Z', 'Position': [139.744207, 35.669823], 'Accuracy': {'Horizontal': 1}}]}