从AWS Java SDK v1迁v2:如何用IAM凭证创建MQTT客户端?
AWS Java SDK v2中使用IAM凭证实例化MQTT客户端
在SDK v2中,你可以通过AwsIotMqttConnectionBuilder(对应Mqtt3的MqttClientConnection)或AwsIotMqtt5ClientBuilder(对应Mqtt5的Mqtt5Client)来配置IAM凭证,具体实现如下:
一、使用MqttClientConnection(Mqtt3)
将你的临时IAM凭证转换为SDK v2的AwsSessionCredentials,再通过StaticCredentialsProvider提供给连接构建器:
// 转换临时凭证为SDK v2格式 AwsSessionCredentials sessionCredentials = AwsSessionCredentials.create( cred.accessKeyId(), cred.secretAccessKey(), cred.sessionToken() ); // 创建静态凭证提供器 CredentialsProvider credentialsProvider = StaticCredentialsProvider.create(sessionCredentials); // 构建并初始化MqttClientConnection MqttClientConnection connection = AwsIotMqttConnectionBuilder .standard() .endpoint(iotEndpoint) // IoT数据端点,格式如:xxx.iot.region.amazonaws.com .clientId(clientId) .credentialsProvider(credentialsProvider) .build(); // 发起连接 connection.connect().join();
二、使用Mqtt5Client
同样基于凭证提供器配置,使用AwsIotMqtt5ClientBuilder构建Mqtt5客户端:
// 转换临时凭证为SDK v2格式 AwsSessionCredentials sessionCredentials = AwsSessionCredentials.create( cred.accessKeyId(), cred.secretAccessKey(), cred.sessionToken() ); // 创建静态凭证提供器 CredentialsProvider credentialsProvider = StaticCredentialsProvider.create(sessionCredentials); // 构建并启动Mqtt5Client Mqtt5Client mqtt5Client = AwsIotMqtt5ClientBuilder .standard() .endpoint(iotEndpoint) .clientId(clientId) .credentialsProvider(credentialsProvider) .build(); // 启动客户端 mqtt5Client.start();
注意事项
- 确保引入SDK v2的相关依赖,核心依赖包括
software.amazon.awssdk:iot和software.amazon.awssdk:iot-device-sdk(根据客户端类型调整)。 - IoT端点需使用AWS IoT控制台或CLI获取的数据端点,若使用ATS(Amazon Trust Services)证书,端点需带
-ats后缀。 - 如果你的凭证来自Cognito、STS等服务,也可以直接使用对应的凭证提供器(如
CognitoCredentialsProvider)替代StaticCredentialsProvider,无需手动转换凭证格式。
内容的提问来源于stack exchange,提问作者Mradul Singhal
相关产品推荐
相关产品推荐

