翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Android アプリケーションの作成
Amazon Location Service を使用して iOS アプリケーションを構築するには、次の手順に従います。
GitHub
AWS アカウントの準備ができたら、Amazon Location Service リソースを生成できます。これらのリソースは、提供されたコードスニペットを実行するために不可欠です。
注記
AWS アカウントをまだ作成していない場合は、AWS アカウントを作成
まず、Amazon Cognito アイデンティティプール ID を作成する必要があります。以下の手順に従ってください。
-
AWS コンソールで、Amazon Cognito サービスに移動し、左側のメニューから ID プールを選択し、ID プールの作成を選択します。
-
ゲストアクセスがチェックされていることを確認し、次へを押して続行します。
-
次に、新しい IAM ロールを作成するか、既存の IAM ロールを使用します。
-
ID プール名を入力し、ID プールが次の手順で作成するマップとトラッカーの Amazon Location
(geo)
リソースにアクセスできることを確認します。
次に、 AWS Amazon Location コンソールでマップを作成してスタイル設定する必要があります。次の手順を使用します。
-
Amazon Location コンソールのマップセクション
に移動し、マップの作成を選択して使用可能なマップスタイルをプレビューします。 -
新しいマップリソースに名前と説明を付けます。マップリソースに割り当てる名前は、チュートリアルの後半で使用するため、記録します。
-
マップスタイルを選択する際は、マップデータプロバイダーを考慮してください。詳細については、AWS サービス利用規約
の第 82 項を参照してください。 -
Amazon Location の利用規約
に同意し、マップの作成を選択します。マップを作成したら、任意の方向にズームイン、ズームアウト、またはパンすることでマップを操作できます。
Amazon Location コンソールを使用してトラッカーを作成するには
-
左のナビゲーションペインから、[トラッカー] を選択します。
-
トラッカーを作成を選択します。
-
すべての必須フィールドに入力します。
-
[位置フィルター] で、トラッカーリソースの使用目的に最も適したオプションを選択します。位置フィルタリングを設定しない場合、デフォルト設定は TimeBased です。詳細については、このガイドの「トラッカー」および「Amazon Location Service Trackers API リファレンス」のPositionFiltering」を参照してください。
-
[トラッカーを作成] を選択して終了します。
ジオフェンスコレクションを作成するときは、コンソール、API、または CLI のいずれかを使用できます。以下の手順で、各オプションについて説明します。
Amazon Location コンソールを使用してジオフェンスコレクションを作成する:
-
Amazon Location Service コンソール (https://console.aws.amazon.com/location/) を開きます。
-
左側のナビゲーションペインで、ジオフェンスコレクションを選択します。
-
[ジオフェンスコレクションの作成] を選択します。
-
コレクションの名前と説明を入力します。
-
[CloudWatch をターゲットとするEventBridge ルール] で、オプションのEventBridge ルールを作成して、ジオフェンスイベントへの対応を開始できます。これにより、Amazon Location は Amazon CloudWatch Logs にイベントをパブリッシュできるようになります。
-
[ジオフェンスコレクションの作成] を選択します。
Amazon Location APIs を使用してジオフェンスコレクションを作成します。
Amazon Location Geofences API の CreateGeofenceCollection オペレーションを使用してください。以下の例では、API リクエストを使用して
というジオフェンスコレクションを作成します。GOECOLLECTION_NAME
POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "
GOECOLLECTION_NAME
", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }
AWS CLI コマンドを使用してジオフェンスコレクションを作成します。
create-geofence-collection コマンドを使用します。次の例では、 を使用して AWS CLI というジオフェンスコレクションを作成します
。GOECOLLECTION_NAME
aws location \ create-geofence-collection \ --collection-name "
GOECOLLECTION_NAME
" \ --description "Shopping center geofence collection" \ --tags Tag1=Value1
トラッカーをジオフェンスコレクションにリンクするには、コンソール、API、または CLI のいずれかを使用できます。以下の手順で、各オプションについて説明します。
Amazon Location Service コンソールを使用してトラッカーリソースをジオフェンスコレクションにリンクする:
-
Amazon Location コンソールを開きます。
-
左のナビゲーションペインから、[トラッカー] を選択します。
-
[デバイストラッカー] で、対象トラッカーの名前リンクを選択します。
-
[リンクされたジオフェンスコレクション] で [ジオフェンスコレクションをリンク] を選択します。
-
[リンクされたジオフェンスコレクション] ウィンドウのドロップダウンメニューからジオフェンスコレクションを選択します。
-
[Link (リンク)] を選択します。
-
トラッカーリソースをリンクすると、そのリソースには[アクティブ] ステータスが割り当てられます。
Amazon Location API を使用してトラッカーリソースをジオフェンスコレクションにリンクする:
Amazon Location Trackers API から AsssociateTrackerConsumer オペレーションを使用します。 APIs 以下は、Amazon リソースネーム (ARN) を使用して ExampleTracker をジオフェンスコレクションにリンクする API リクエストの例です。
POST /tracking/v0/trackers/ExampleTracker/consumers Content-type: application/json { "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/
GOECOLLECTION_NAME
" }
コマンドを使用して AWS CLI トラッカーリソースをジオフェンスコレクションにリンクします。
associate-tracker-consumer
コマンドを使用します。次の例では、 を使用して AWS CLI というジオフェンスコレクションを作成します
。GOECOLLECTION_NAME
aws location \ associate-tracker-consumer \ --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/
GOECOLLECTION_NAME
" \ --tracker-name "ExampleTracker"
Lambda 関数を作成します。
AWS IoT Core と Amazon Location Service 間の接続を作成するには、EventBridge CloudWatch イベントによって転送されたメッセージを処理するための AWS Lambda 関数が必要です。 CloudWatch この関数は、位置データを抽出し、Amazon Location Service 用にフォーマットし、Amazon Location Tracker API を通じて送信します。この関数は、 AWS Lambda コンソールから作成することも、 AWS Command Line Interface (AWS CLI) または AWS Lambda APIsを使用することもできます。コンソールを使用して Amazon Location に位置更新を公開する Lambda 関数を作成するには:
-
https://console.aws.amazon.com/lambda/ で AWS Lambda コンソールを開きます。
-
ナビゲーションペインで、[関数] を選択します。
-
関数を作成を選択し、最初から作成するが選択されていることを確認します。
-
次のボックスに入力します。
-
関数名
-
Runtime オプションで、Node.js 16.x を選択します。
-
-
[関数の作成] を選択してください。
-
[コード] タブを選択してエディタを開きます。
-
index.js のプレースホルダーコードを次のように上書きします。
const AWS = require('aws-sdk') const iot = new AWS.Iot(); exports.handler = function(event) { console.log("event===>>>", JSON.stringify(event)); var param = { endpointType: "iot:Data-ATS" }; iot.describeEndpoint(param, function(err, data) { if (err) { console.log("error===>>>", err, err.stack); // an error occurred } else { var endp = data['endpointAddress']; const iotdata = new AWS.IotData({endpoint: endp}); const trackerEvent = event["detail"]["EventType"]; const src = event["source"]; const time = event["time"]; const gfId = event["detail"]["GeofenceId"]; const resources = event["resources"][0]; const splitResources = resources.split("."); const geofenceCollection = splitResources[splitResources.length - 1]; const coordinates = event["detail"]["Position"]; const deviceId = event["detail"]["DeviceId"]; console.log("deviceId===>>>", deviceId); const msg = { "trackerEventType" : trackerEvent, "source" : src, "eventTime" : time, "geofenceId" : gfId, "coordinates": coordinates, "geofenceCollection": geofenceCollection }; const params = { topic: `${deviceId}/tracker`, payload: JSON.stringify(msg), qos: 0 }; iotdata.publish(params, function(err, data) { if (err) { console.log("error===>>>", err, err.stack); // an error occurred } else { console.log("Ladmbda triggered===>>>", trackerEvent); // successful response } }); } }); }
-
[デプロイ] を選択して、関数を更新します。
-
設定タブを選択します。
-
トリガーセクションで、トリガーの追加をクリックします。
-
[ソース] フィールドで [EventBridge (CloudWatch Events)] を選択します。
-
「既存のルール」ラジオオプションを選択します。
-
この「AmazonLocationMonitor-GEOFENCECOLLECTION_NAME」のようなルール名を入力します。
-
追加ボタンをクリックします。
-
これにより、アクセス許可タブに「リソースベースのポリシーステートメント」もアタッチされます。
MQTT テストクライアント
-
左側のナビゲーションペインで、MQTT テストクライアントを選択します。
-
[MQTT テストクライアント] というセクションが表示され、そこで MQTT 接続を設定できます。
-
必要な設定を行った後、[接続] ボタンをクリックして、指定したパラメータを使用して MQTT ブローカーへの接続を確立します。
-
エンドポイント値を書き留めます。
接続したら、MQTT テストクライアントインターフェイスで提供されているそれぞれの入力フィールドを使用して、MQTT トピックをサブスクライブしたり、トピックにメッセージを発行したりできます。次に、MQTT ポリシーをアタッチします。
-
左側のメニューの [管理] で、[セキュリティ] オプションを展開し、[ポリシー] をクリックします。
-
[ポリシーを作成] ボタンをクリックします。
-
ポリシー名を入力します。
-
[ポリシードキュメント] で [JSON] タブを選択します。
-
以下に示すポリシーをコピーして貼り付けます。ただし、すべての要素を実際の
とREGION
で更新してください。ACCOUNT_ID
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iot:Connect", "iot:Publish", "iot:Subscribe", "iot:Receive" ], "Resource": [ "arn:aws:iot:
REGION
:ACCOUNT_ID
:client/${cognito-identity.amazonaws.com:sub}", "arn:aws:iot:REGION
:ACCOUNT_ID
:topic/${cognito-identity.amazonaws.com:sub}", "arn:aws:iot:REGION
:ACCOUNT_ID
:topicfilter/${cognito-identity.amazonaws.com:sub}/", "arn:aws:iot:REGION
:ACCOUNT_ID
:topic/${cognito-identity.amazonaws.com:sub}/tracker" ], "Effect": "Allow" } ] }注記
次の手順で使用するポリシー名とトピック名を記録します。
-
[作成] ボタンを選択して終了します。
前の手順が完了したら、以下のようにゲストロールのアクセス許可を更新します。
-
Amazon Cognito に移動し、アイデンティティプールを開きます。次に、[ユーザーアクセス] に進み、[ゲストロール] を選択します。
-
[アクセス許可ポリシー] をクリックして、[編集] を有効にします。
{ 'Version': '2012-10-17', 'Statement': [ { 'Action': [ 'geo:GetMap*', 'geo:BatchUpdateDevicePosition', 'geo:BatchEvaluateGeofences', 'iot:Subscribe', 'iot:Publish', 'iot:Connect', 'iot:Receive', 'iot:AttachPrincipalPolicy', 'iot:AttachPolicy', 'iot:DetachPrincipalPolicy', 'iot:DetachPolicy' ], 'Resource': [ 'arn:aws:geo:us-east-1:{
USER_ID
}:map/{MAP_NAME
}', 'arn:aws:geo:us-east-1:{USER_ID
}:tracker/{TRACKER_NAME
}', 'arn:aws:geo:us-east-1:{USER_ID
}:geofence-collection/{GEOFENCE_COLLECTION_NAME
}', 'arn:aws:iot:us-east-1:{USER_ID
}:client/${cognito-identity.amazonaws.com:sub}', 'arn:aws:iot:us-east-1:{USER_ID
}:topic/${cognito-identity.amazonaws.com:sub}', 'arn:aws:iot:us-east-1:{USER_ID
}:topicfilter/${cognito-identity.amazonaws.com:sub}/*', 'arn:aws:iot:us-east-1:{USER_ID
}:topic/${cognito-identity.amazonaws.com:sub}/tracker' ], 'Effect': 'Allow' }, { 'Condition': { 'StringEquals': { 'cognito-identity.amazonaws.com:sub': '${cognito-identity.amazonaws.com:sub}' } }, 'Action': [ 'iot:AttachPolicy', 'iot:DetachPolicy', 'iot:AttachPrincipalPolicy', 'iot:DetachPrincipalPolicy' ], 'Resource': [ '*' ], 'Effect': 'Allow' } ] } -
上記のポリシーの変更により、アプリケーションに必要なすべての AWS リソースが適切に設定されるようになりました。
-
Android Studio を開き、バージョン管理から新規を選択し、次にプロジェクトを選択します。
-
Android Studio の左上隅にあるファイルメニューに移動します。
-
ドロップダウンメニューから「新規」を選択します。
-
「バージョン管理からプロジェクト」を選択します。
-
リポジトリ URL と入力 表示されるダイアログボックスで、「URL」とマークされたフィールドを見つけます。
-
サンプルアプリケーションの次の URL をコピーしてこのフィールドに貼り付けます。https://github.com/aws-geospatial/amazon-location-samples-android.git
-
リポジトリのクローンを作成するディレクトリを決定します。デフォルトのディレクトリを使用するか、カスタムの場所を選択します。
-
リポジトリ URL とディレクトリの設定が完了したら、「クローン」ボタンをクリックします。Android Studio は、指定された場所にリポジトリのクローンを作成します。
-
これで、アプリケーションをマシンにクローンし、使用を開始できます。
サンプルを使用するには、以下の手順に従います。
-
custom.properties
を作成する:custom.properties
ファイルを設定するには、以下の手順に従います。-
任意のテキストエディタまたは IDE を開きます。
-
新しいファイルを作成します。
-
次に、
custom.properties
という名前でファイルを保存します。 -
を次のコードサンプル
custom.properties
で更新し、MQTT_END_POINT
、POLICY_NAME
GEOFENCE_COLLECTION_NAME
、、 を実際の値に置き換えTOPIC_TRACKER
ます。MQTT_END_POINT=xxxxxxxxxxxxx-xxx.xxx.us-east-1.amazonaws.com POLICY_NAME=xxxxxxxxx GEOFENCE_COLLECTION_NAME=xxxxxxxxxxxxxxxxx TOPIC_TRACKER=xxxxxxxxxx
-
プロジェクトをクリーンアップして再構築します。その後、プロジェクトを実行できます。
-
-
サインイン:
アプリケーションにサインインするには、以下の手順に従います。
-
[サインイン] ボタンを押します。
-
アイデンティティプール ID、トラッカー名、マップ名を指定します。
-
[サインイン] をもう一度押して終了します。
-
-
フィルタを管理する:
設定画面を開き、次の操作を実行します。
-
スイッチ UI を使用してフィルターのオン/オフを切り替えます。
-
必要に応じて、時間と距離のフィルタを更新します。
-
-
追跡オペレーション:
追跡画面を開き、以下の操作を実行します。
-
それぞれのボタンを押して、フォアグラウンド、バックグラウンド、またはバッテリーセーバーモードで追跡を開始および停止できます。
-