2016-10-19 2 views
0

J'essaie de créer une règle en utilisant le aws sdk pour Java (pas le aws autonome iot java sdk).Comment définir les actions dans aws java sdk pour la règle iot?

Jusqu'à présent, je l'ai fait

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

} 

Dans le code ci-dessus, je suis coincé à la partie topicRulePayload.setActions();

Comment puis-je définir des actions à elle? J'ai examiné son code source et découvert qu'il utilise des collections.

Répondre

0

Je l'ai finalement obtenu de travailler pour moi

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