位置
Location (location
) 操作会将您的地理位置数据路由到 Amazon Location Service。
要求
此规则操作具有以下要求:
-
AWS IoT 可以承担以执行
geo:BatchUpdateDevicePosition
操作的 IAM 角色。有关更多信息,请参阅 向 AWS IoT 规则授予所需的访问权限。在 AWS IoT 控制台中,您可以选择或创建一个角色以允许 AWS IoT 执行此规则操作。
参数
使用此操作创建 AWS IoT 规则时,您必须指定以下信息:
deviceId
-
提供位置数据的设备的唯一 ID。有关更多信息,请参阅 Amazon Location Service API 参考 中的
DeviceId
。支持替换模板:是
latitude
-
计算结果为表示设备位置纬度的双精度值的字符串。
支持替换模板:是
longitude
-
计算结果为表示设备位置经度的双精度值的字符串。
支持替换模板:是
roleArn
-
允许访问 Amazon Location Service 域的 IAM 角色。有关更多信息,请参阅 要求。
timestamp
-
对位置数据进行采样的时间。默认值是处理 MQTT 消息的时间。
timestamp
值由以下两个值组成:-
value
:返回长纪元时间值的表达式。您可以使用 time_to_epoch(String, String) 函数从消息负载中传递的日期或时间值创建有效的时间戳。支持替换模板:是。 -
unit
:(可选)value
中描述的表达式生成的时间戳值的精度。有效值:SECONDS
|MILLISECONDS
|MICROSECONDS
|NANOSECONDS
。默认为MILLISECONDS
。支持替换模板:仅限 API 和 AWS CLI。
-
trackerName
-
Amazon Location 中更新位置的跟踪器资源的名称。有关更多信息,请参阅 Amazon Location Service 开发人员指南 中的跟踪器。
支持替换模板:仅限 API 和 AWS CLI
示例
以下 JSON 示例定义了 AWS IoT 规则中的定位操作。
{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "location": { "roleArn": "arn:aws:iam::123454962127:role/service-role/ExampleRole", "trackerName": "MyTracker", "deviceId": "001", "sampleTime": { "value": "${timestamp()}", "unit": "MILLISECONDS" }, "latitude": "-12.3456", "longitude": "65.4321" } } ] } }
以下 JSON 示例定义了 AWS IoT 规则中带有替换模板的定位操作。
{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "location": { "roleArn": "arn:aws:iam::123456789012:role/service-role/ExampleRole", "trackerName": "${TrackerName}", "deviceId": "${DeviceID}", "timestamp": { "value": "${timestamp()}", "unit": "MILLISECONDS" }, "latitude": "${get(position, 0)}", "longitude": "${get(position, 1)}" } } ] } }
以下 MQTT 有效负载示例显示了上面示例中的替换模板如何访问数据。您可以使用 get-device-position-history CLI 命令来验证 MQTT 有效负载数据是否已在位置跟踪器中传递。
{ "TrackerName": "mytracker", "DeviceID": "001", "position": [ "-12.3456", "65.4321" ] }
aws location get-device-position-history --device-id
001
--tracker-namemytracker
{ "DevicePositions": [ { "DeviceId": "001", "Position": [ -12.3456, 65.4321 ], "ReceivedTime": "2022-11-11T01:31:54.464000+00:00", "SampleTime": "2022-11-11T01:31:54.308000+00:00" } ] }
另请参阅
-
Amazon Location Service 开发人员指南 中的什么是 Amazon Location Service?。