Публикация в тему на AWS iot из лямбда-функции [Java]

Я пытаюсь опубликовать тему на моем 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() {

        }
    });
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
575
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

AWSIotDataClient не устарел, просто конструкторы устарели, как и конструкторы всех AWSClient реализаций в пользу сборщиков. Вы должны использовать AwsClientBuilder.build() для получения экземпляра AWSIotDataClient. Затем вы можете вызвать метод publish() для экземпляра AWSIotDataClient, чтобы опубликовать его в своей теме IoT.

Спасибо тебе за пояснение. Если я хочу, чтобы AWSIotDataClient публиковался в IoT, мне нужен AWSIotDataClientBuiler, верно? Моя проблема в том, что когда я хочу построить() AWSIotDataClientBuilder, я получаю сообщение об ошибке, что этот метод возвращает AWSIotData; который представляет собой интерфейс, реализованный AWSIotDataClient, нужно ли мне его использовать? И дополнительный вопрос: размещать ли этот клиентский материал в каждом классе IntentHandler отдельно или в классе StreamHanler?

kath2106 24.06.2019 08:44

Для вашего первого вопроса нет необходимости приводить AWSIoTData, поскольку у него есть метод publish(), просто используйте интерфейс.

Mark B 24.06.2019 15:37

Спасибо за помощь. Могу я спросить, есть ли у вас какой-нибудь пример кода. Я искал несколько дней и не нашел ничего, что помогло бы. У меня также есть проблема, что как только я добавляю зависимость maven для aws-core или aws-iot и загружаю банку, то в лямбду я получаю ошибку конечной точки. Это происходит, даже если я вообще не трогаю код, зависимостей достаточно, чтобы все рухнуло.

kath2106 25.06.2019 10:02
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"));

Другие вопросы по теме

Как проверить, запущен ли экземпляр ec2 с помощью оператора if?
Загрузка файла изображения в приложение AWS Lambda .Net Core из браузера приводит к непригодному для использования файлу — как исправить?
Не удалось создать сервис в Amazon ECS с помощью Application Load Balancer. Сообщение об ошибке не выдается
EC2 Java StartInstancesRequest переходит из состояния «ожидание» в состояние «остановлено» и далее в состояние «остановлено»
Элемент Dynamodb put перезаписывает старый
Почему я должен использовать роли IAM?
AWS SAM: приложение java8/gradle завершается с ошибкой ClassNotFound при развертывании (но локально работает нормально)
Пул пользователей Cognito пытается отправить SMS, если он настроен на отправку электронной почты
Redshift Spectrum дает синтаксическую ошибку при создании вложенных данных
AWS EC2 — где я узнаю, сколько EBS (в гигабайтах) я получу за создание экземпляра при использовании экземпляра t3.medium