Как написать API для AWS IOT с использованием Java - PullRequest
0 голосов
/ 17 октября 2019

Проблема состоит в том, что --- мне нужно написать API, чтобы получить обновление и удалить теневое состояние объекта, и мне нужно опубликовать те же данные JSON или состояние на другой URL.

Мне нужнознаете, чтобы пройти аутентификацию перед подключением к этой конечной точке AWS IOT? или я могу просто получить доступ к теневым данным JSON без аутентификации.

Для каждой вещи мы установили GET UPDATE и DELETE shadow thread в консоли IOT. Как я могу использовать их в своем API.

Прошел всю документацию по API AWS для создания API https://docs.aws.amazon.com/iot/latest/developerguide/API_GetThingShadow.html

Даже я пробовал пример кода Git для запуска на моей машине, Даже я могуаутентифицировать используя сертификат Thing. Но мы не понимаем, как писать API обновления, используя методы по этой ссылке https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/iotdata/AWSIotData.html#getThingShadow-com.amazonaws.services.iotdata.model.GetThingShadowRequest-

public static void main(String args[]) throws IOException, AWSIotException, AWSIotTimeoutException,
    InterruptedException {
        CommandArguments arguments = CommandArguments.parse(args);
        initClient(arguments);
        awsIotClient.setWillMessage(new AWSIotMessage("client/disconnect", AWSIotQos.QOS0, awsIotClient.getClientId()));
        System.out.println(awsIotClient.getConnectionStatus());

        String thingName = arguments.getNotNull("thingName", SampleUtil.getConfig("thingName"));
        System.out.println(thingName);
        AWSIotDevice device = new AWSIotDevice(thingName);

        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

        Thing thing = new Thing();
        while (true) {
            long desired = thing.state.desired.counter;
            thing.state.reported.counter = desired;
            thing.state.desired.counter = desired + 1;
            System.out.println(desired);
            String jsonState = objectMapper.writeValueAsString(thing);
//          String jsonState = "{light: light,temperature: temperature,state: {color: color}};";

            System.out.println(jsonState);
            // Get document from the shadow
            try {
                String shadowState = device.get();
                System.out.println("Get Record form JSon --- > " +System.currentTimeMillis() + ": <<< " + shadowState);

                thing = objectMapper.readValue(shadowState, Thing.class);
            } catch (AWSIotException e) {
                System.out.println(System.currentTimeMillis() + ": get failed for " + jsonState);
                continue;
            }
            try {
                // Send updated document to the shadow
                device.update(jsonState);
                System.out.println(System.currentTimeMillis() + ": >>> " + jsonState);
            } catch (AWSIotException e) {
                System.out.println(System.currentTimeMillis() + ": update failed for " + jsonState);
                continue;
            }

        }

Нужно писать API, используя такие методы, как getThingShadow. updateThingShadow для связи с моим AWS IOT THING.

...