Soracom

Users

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

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

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

Beam の Web サイトエントリポイント を利用することで、以下のようなメリットがあります。

  • Tracking にデータを送信するための認証情報を、デバイスにインストールする必要がありません。
  • デバイスでは、Beam の Web サイトエントリポイントを指定してアクセスするだけで、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 アカウントの Amazon Location Service の Tracking にリクエストを送信する権限を追加した IAM ポリシーを作成します。

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

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

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

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

    • [次のリソース]: 「このアカウント」を選択します。
    • [リソースのリージョン]: お客様の Tracking を作成するリージョンを入力するか、[任意のリージョン] にチェックを入れます。
    • [Resource tracker name]: [任意の tracker name] にチェックを入れます。
  • [ポリシー名]: IAM ポリシーの名前を入力します。これ以降、${iam_policy_name} と表記します。例: beam-tracker-policy

IAM ロール

このページで説明する機能を体験するために、「SORACOM の AWS アカウント」を信頼できるエンティティとして指定した IAM ロールを作成します。

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

  • [信頼されたエンティティを選択]: IAM ロールの利用を許可する AWS アカウントとして、「SORACOM の AWS アカウント」を設定します。カバレッジタイプによって異なります。
  • [外部 ID]: IAM ロールを利用する際に外部 ID (任意の文字列) を要求し、セキュリティを強化します。IAM ロールごとに異なる文字列を指定してください。これ以降、${external_id} と表記します。例: External-ID-tsqTJAB7LvQe0JtF
  • [許可ポリシー] (アタッチする IAM ポリシー): ${iam_policy_name} にチェックを入れます。例: beam-tracker-policy
  • [ロール名]: IAM ロールの名前 (例: beam-tracker-role) を入力します。

なお、ここで作成した 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}}]}