如何获取 AWS IOT 客户端 ID?

How to get AWS IOT client id?

我使用 AWS IoT 在我的 Web 应用程序中进行实时更新。 该应用程序使用 aws-iot-device-sdk:

连接到 AWS IoT
const client = awsIot.device({
    region: awsConfig.region,
    protocol: 'wss',
    accessKeyId: <accessKey>,
    secretKey: <secretKey>,
    sessionToken: <sessionToken>,
    port: 443,
    host: <iotEndpoint>
});

client.on('connect', res => {
    // ok
});

我想使用 AWS Lifecycle Events。例如:

$aws/events/presence/connected/{clientId}

如何获取 MQTT 客户端 ID?

如果您查看 the documentation,您会发现 clientId 是可以提供给 device() 方法的参数之一。您应该为每个连接的设备生成一个对您的应用程序唯一的客户端 ID(即对您的 AWS IoT 账户唯一)。

每当您在 AWS IoT 中定义一个事物时,都会在您的 AWS IoT 账户中为您的设备分配一个唯一标识符。默认情况下,它与事物的名称 (defaultClientId) 相同,您可以使用它来连接到 AWS IoT 代理。 您可以使用 AWS SDK(或您的设备名称)检索有关您的事物的信息。例如通过使用 Python SDK:

import boto3
client = boto3.client('iot')
response = client.describe_thing(
    thingName = [Name of your thing in AWS IoT]
)

print(response)

您可以使用 SQL 函数 clientId 来获取客户端 ID,例如

SELECT clientId() as clientId,* FROM '$aws/events/presence/connected/+

我可以在消息负载中检索它。