Как установить действия в aws java sdk для правила iot?

Я пытаюсь создать правило, используя aws sdk для java (а не автономный aws iot java sdk).

До сих пор я сделал это

public class Application extends Controller {

    static AWSIotClient awsIotClient;

    private static void init() {
        AWSCredentials credentials = null;
        try {
            credentials = new ProfileCredentialsProvider().getCredentials();
        } catch (Exception e) {
            throw new AmazonClientException(
                    "Cannot load the credentials from the credential profiles file. " +
                            "Please make sure that your credentials file is at the correct " +
                            "location (~/.aws/credentials), and is in valid format.",
                    e);
        }
        awsIotClient = new AWSIotClient(credentials);
        Region usEast1 = Region.getRegion(Regions.US_EAST_1);
        awsIotClient.setRegion(usEast1);
        Logger.info("Creds init");
    }

    public static Result index() {
        init();
        CreateTopicRuleRequest another_test = new CreateTopicRuleRequest();
        another_test.setRuleName("test");
        TopicRulePayload topicRulePayload = new TopicRulePayload();
        topicRulePayload.setDescription("A test rule");
        topicRulePayload.setSql("SELECT state.reported.turbineStatus FROM '$aws/things/turbine1/shadow/update/accepted' WHERE state.reported.turbineStatus=true");
        topicRulePayload.setActions(); // stuck here
        another_test.setTopicRulePayload(topicRulePayload);
        CreateTopicRuleResult test = awsIotClient.createTopicRule(another_test);

        return ok(index.render("iot"));
    }

}

В приведенном выше коде я застрял в части topicRulePayload.setActions();

Как я могу установить действия для него? Я просмотрел его исходный код и обнаружил, что он использует коллекции.


person Sushant Bajracharya    schedule 19.10.2016    source источник


Ответы (1)


Наконец-то у меня это работает

public static Result index() {
        init();
        CreateTopicRuleRequest another_test = new CreateTopicRuleRequest();
        another_test.setRuleName("test");
        TopicRulePayload topicRulePayload = new TopicRulePayload();
        topicRulePayload.setDescription("A test rule");
        topicRulePayload.setSql("SELECT state.reported.turbineStatus FROM '$aws/things/turbine1/shadow/update/accepted' WHERE state.reported.turbineStatus=true");
        ArrayList<Action> actionList = new ArrayList();
        Action action = new Action();
        S3Action s3 = new S3Action();
        s3.setRoleArn("arn:aws:iam::442759113924:role/sushant");
        s3.setBucketName("bajra-iot-test");
        s3.setKey("bajra-iot-test");

        action.setS3(s3);
        actionList.add(action);
        topicRulePayload.setActions(actionList);
        another_test.setTopicRulePayload(topicRulePayload);
        CreateTopicRuleResult test = awsIotClient.createTopicRule(another_test);

        return ok(index.render("iot"));
    }
person Sushant Bajracharya    schedule 19.10.2016