You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:14:54