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 に位置情報などのデータを送信できます。署名バージョン 4 の署名プロセス をデバイスで行う必要はありません。
HTTP エントリポイントは利用できません

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

ステップ 1: IAM ロールを作成して SORACOM の AWS アカウントに割り当てる

お客様のアカウントの Tracking へのアクセスを許可するための AWS IAM ロールを作成し、Beam が動作する SORACOM の AWS アカウントに割り当てます。

  1. 以下のボタンをクリックして IAM コンソールにアクセスし、[アクセス管理][ロール] の順にクリックして、[ロールを作成] をクリックします。

  2. [AWS アカウント][別の AWS アカウント] の順にクリックし、[アカウント ID] に SORACOM の AWS アカウント ID を入力します。

    Beam が動作する SORACOM の AWS アカウントの ID は、カバレッジタイプによって異なります。

    • 日本カバレッジ: 762707677580
    • グローバルカバレッジ: 950858143650

  3. [外部 ID を要求する] にチェックを入れ、[外部 ID] に任意の文字列を入力します。

    [外部 ID] に入力した文字列は、これ以降、${external_id} と表記します。例: External-ID-tsqTJAB7LvQe0JtF

  4. [次へ] をクリックします。

    「許可を追加」画面が表示されます。

  5. [ポリシーを作成] をクリックします。

    別のウィンドウまたは別のタブで、「ポリシーの作成」画面が表示されます。

    ここからは「ポリシーの作成」画面でポリシーを作成します

    「ポリシーの作成」画面の操作が終わったら、[ポリシーの作成] が表示されている「許可を追加」画面に戻ってきて IAM ロールを作成する操作を続けます。画面を閉じないでください。

  6. 以下の項目を設定します。

    項目説明
    [サービス][サービスの選択] をクリックして、[Location] をクリックします。
    [アクション]

    以下の権限にチェックを入れます。[フィルタアクション] に以下の文字列を入力すると、フィルタリングできます。

    • [GetDevicePositionHistory]
    • [TagResource]
    • [BatchUpdateDevicePosition]
    • [CreateTracker]
    • [UpdateTracker]

  7. [リソース][指定][tracker][ARN の追加] の順にクリックします。

    「ARN の追加」画面が表示されます。

  8. [Location_tracker の ARN の指定] に、お客様の AWS アカウントの Amazon Location Service の ARN (例: arn:aws:geo:ap-northeast-1:XXXXXXXXXXXX:tracker/*) を入力して、[追加] をクリックします。

    「ポリシーの作成」画面に戻ります。

  9. [次のステップ: タグ][次のステップ: 確認] の順にクリックします。

  10. [名前] に AWS IAM ポリシーの名前を入力し、[ポリシーの作成] をクリックします。

    AWS IAM ポリシーが作成され、ポリシー画面が表示されます。

  11. ポリシー画面が表示されているウィンドウまたはタブを閉じて、「許可を追加」画面に戻ります。

  12. [] をクリックし、手順 10 で入力した AWS IAM ポリシーの名前をテキストボックスに入力して、Enter キーを押します。

    作成した AWS IAM ポリシーが表示されます。

  13. 作成した AWS IAM ポリシーにチェックを入れて、[次へ] をクリックします。

  14. [ロール名] に IAM ロールの名前を入力して、[ロールを作成] をクリックします。

    ロール画面に戻ります。

  15. 作成した IAM ロールの名前をクリックし、[ARN] をメモします。

    この 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 ロールに関する認証情報を、ユーザーコンソールの認証情報ストアに登録します。認証情報は、${iam_role_arn} および ${external_id} です。認証情報ストアの「認証情報を登録」画面の表示方法については、認証情報を登録する を参照してください。

認証情報は、以下のように登録します。

項目説明
[認証情報 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

credential registration credential registration

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}}]}