Sushant Bajracharya Sushant Bajracharya - 6 months ago 26
Java Question

How to set Actions in aws java sdk for iot rule?

I am trying to create a rule using the aws sdk for java (not the standalone aws iot java sdk).

So far I have done these

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"));
}

}


In the code above, I am stuck at the part
topicRulePayload.setActions();


How can I set actions to it? I looked over its source code and found out that it is using collections.

Answer Source

I finally got it working for me

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"));
    }
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download