お客様の 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 を呼び出す権限を追加します。 具体的には以下のように設定します。
|
IAM ロール | SORACOM の AWS アカウントを、信頼できるエンティティとして指定します。
なお、ここで作成した IAM ロールの ARN を、これ以降、${iam_role_arn} と表記します。例:
|
ステップ 2: SORACOM Beam をセットアップする
Beam の Web サイトエントリポイントを設定します。ここで説明するとおりに設定すると、以下の機能が実現できます。
- IoT SIM を利用するデバイスから送信されたデータを Beam から Tracking に転送する。
- IoT SIM を利用するデバイスで Tracking に保存されているデータを取得したりする。
認証情報ストアに AWS IAM ロール認証情報を登録する
Beam から Tracking を利用するために、IAM ロールに関する認証情報を、SORACOM ユーザーコンソールに登録します。
具体的には、認証情報ストアの「認証情報を登録」画面で以下のように登録します。この画面の表示方法については、認証情報を登録する を参照してください。
項目 | 説明 |
---|---|
認証情報を識別するために任意の名前を入力します。例: AWS-IAM-role-credentials-tracker | |
「AWS IAM ロール認証情報」を選択します。 | |
${iam_role_arn} を入力します。例: arn:aws:iam::XXXXXXXXXXXX:role/beam-tracker-role | |
${external_id} を入力します。例: External-ID-tsqTJAB7LvQe0JtF |
Beam の Web サイトエントリポイントを設定する
Beam の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
→ の順にクリックします。
「SORACOM Beam - Web サイト転送設定」画面が表示されます。
以下のように設定します。
項目 説明 任意の設定名 (例: Amazon Location Service Tracking
) を入力します。→ 「HTTPS」を選択します。 → tracking.geo.${Amazon Location Service のリージョン}.amazonaws.com
を入力します (例:tracking.geo.ap-northeast-1.amazonaws.com
)。→ 空欄のままにします。 → オンにして、以下のように設定します。
- : 「AWS Signature V4」を選択します。
- : 「geo」(Amazon Location Service) を選択します。
- : Amazon Location Service のリージョンを選択します。
- 認証情報ストアに AWS IAM ロール認証情報を登録する で登録した AWS IAM ロール認証情報を選択します。 :
Web サイトエントリポイントの設定値の意味は、Web サイトエントリポイント を参照してください。
をクリックします。
IoT SIM の Beam の設定が完了しました。
Air のメタデータサービスを有効化する
このあとの手順で、デバイスから Tracking にデータを送信する際、Air のメタデータサービスを利用します。そのため、IoT SIM が所属するグループで、Air のメタデータサービスを有効化してください。詳しくは、メタデータサービスを設定する を参照してください。
項目 | 説明 |
---|---|
オンにします。 |
ステップ 3: Web サイトエントリポイントを使用して Tracking にデータを送信する
Beam の Web サイトエントリポイントを使用して、Tracking に位置情報を送信したり、受信したりできます。
トラッカーを作成する
Tracking に beam-tracker
という名前のトラッカーを作成します。
デバイスに、requests パッケージ をインストールします。
$ pip install requests
デバイスに、create_tracker.py をダウンロードします。
create_tracker.py はサンプルスクリプトです
create_tracker.py は、メタデータサービスを利用して IMSI を取得し、Tracking に
beam-tracker
という名前の新しいトラッカーを作成するサンプルスクリプトです。デバイスで以下のコマンドを実行して、トラッカーを作成します。
$ 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'}
データを送信する
デバイスに、send_locations.py をダウンロードします。
send_locations.py はサンプルスクリプトです
send_locations.py は、メタデータサービスを利用して IMSI を取得し、Tracking の
beam-tracker
という名前のトラッカーに対して、2 秒間隔で 3 つの固定の位置情報を送信するサンプルスクリプトです。デバイスで以下のコマンドを実行して、3 つの位置情報を送信します。
$ python send_locations.py
データを取得する
デバイスに、get_locations.py をダウンロードします。
get_locations.py はサンプルスクリプトです
get_locations.py は、メタデータサービスを利用して IMSI を取得し、Tracking の
beam-tracker
という名前のトラッカーから過去 3 日間の位置情報を取得するサンプルスクリプトです。デバイスで以下のコマンドを実行して、位置情報を取得します。
$ 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}}]}