依赖
前言:平台给设备下发消息,通过接口的方式实现调用,调用aws iot sdk,实现publish的功能
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-iot</artifactId>
</dependency>
<aws-sdk.version>1.12.310</aws-sdk.version>
SDK
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.services.iotdata.AWSIotData;
import com.amazonaws.services.iotdata.AWSIotDataClient;
import com.amazonaws.services.iotdata.AWSIotDataClientBuilder;
import com.amazonaws.services.iotdata.model.PublishRequest;
import com.amazonaws.services.iotdata.model.PublishResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
/**
* @author Wang
* @Date 2022/9/6
*/
@Component
@Slf4j
@RequiredArgsConstructor
@RefreshScope
public class AwsRestClient {
@Value(value = "${aws.iot.endpoint:https://*.iot.ap-northeast-1.amazonaws.com}")
private String endpoint;
@Value(value = "${aws.iot.region:ap-northeast-1}")
private String region;
@Value(value = "${aws.iot.accessKeyId:*}")
private String accessKey;
@Value(value = "${aws.iot.secretAccessKey:S5GmNeNAMVNInF4Yxn9ZjuzFS//VZvCHvrso8/iz}")
private String secretKey;
public AwsVO publish(PublishRequest request){
AWSStaticCredentialsProvider provider = new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey));
AWSIotDataClientBuilder builder = AWSIotDataClient.builder();
builder.setCredentials(provider);
AwsClientBuilder.EndpointConfiguration configuration = new AwsClientBuilder.EndpointConfiguration(endpoint, region);
builder.setEndpointConfiguration(configuration);
AWSIotData awsIotData = builder.build();
request.setQos(MqttCons.QoS);
PublishResult publishResult = awsIotData.publish(request);
return BeanUtils.map(publishResult, new AwsVO());
}
}