Я пытаюсь опубликовать тему на моем AWS Iot из моей лямбда-функции, которая запускается навыком Alexa. Какой класс AWSClient подходит для этого?
Основываясь на ответе на stackoverflow, я знаю, что мне нужно использовать метод HTTP для публикации из лямбда-функции aws в aws iot, а не MQTT. Поскольку класс AWSIotDataClient устарел, я не знаю, какой класс использовать. AWS предлагает использовать AwsIotClientBuilder, что я и сделал, но что теперь?
AWSIotClientBuilder client = AWSIotClientBuilder.standard();
client.setEndpointConfiguration(conf);
client.setCredentials(new AWSCredentialsProvider() {
@Override
public AWSCredentials getCredentials() {
return cred;
}
@Override
public void refresh() {
}
});




AWSIotDataClient не устарел, просто конструкторы устарели, как и конструкторы всех AWSClient реализаций в пользу сборщиков. Вы должны использовать AwsClientBuilder.build() для получения экземпляра AWSIotDataClient. Затем вы можете вызвать метод publish() для экземпляра AWSIotDataClient, чтобы опубликовать его в своей теме IoT.
Для вашего первого вопроса нет необходимости приводить AWSIoTData, поскольку у него есть метод publish(), просто используйте интерфейс.
Спасибо за помощь. Могу я спросить, есть ли у вас какой-нибудь пример кода. Я искал несколько дней и не нашел ничего, что помогло бы. У меня также есть проблема, что как только я добавляю зависимость maven для aws-core или aws-iot и загружаю банку, то в лямбду я получаю ошибку конечной точки. Это происходит, даже если я вообще не трогаю код, зависимостей достаточно, чтобы все рухнуло.
AWSIotData awsIotDataClient = AWSIotDataClientBuilder.defaultClient(); // add your AWS creds to environment vars to test locally
awsIotDataClient.publish(new PublishRequest()
.withPayload(ByteBuffer.wrap(("{\"some\":\"message\"}").getBytes()))
.withQos(1)
.withTopic("your/topic"));
Спасибо тебе за пояснение. Если я хочу, чтобы AWSIotDataClient публиковался в IoT, мне нужен AWSIotDataClientBuiler, верно? Моя проблема в том, что когда я хочу построить() AWSIotDataClientBuilder, я получаю сообщение об ошибке, что этот метод возвращает AWSIotData; который представляет собой интерфейс, реализованный AWSIotDataClient, нужно ли мне его использовать? И дополнительный вопрос: размещать ли этот клиентский материал в каждом классе IntentHandler отдельно или в классе StreamHanler?