【问题标题】:Set a tag to EC2 instance using JAVA使用 JAVA 为 EC2 实例设置标签
【发布时间】:2018-04-16 11:22:18
【问题描述】:

这是我尝试的最后一个代码:

System.out.println("Manager not exists. Going to create.");
            // Basic 32-bit Amazon Linux AMI 1.0 (AMI Id: ami-08728661)
            RunInstancesRequest request = new RunInstancesRequest("ami-acd005d5", 1, 1);
            request.setInstanceType(InstanceType.T2Micro.toString());
            List<Instance> instances = ec2.runInstances(request).getReservation().getInstances();
            System.out.println("Launch instances: " + instances);
            Instance instance = instances.get(0);

            Collection<String> resources = new ArrayList();
            resources.add(instance.getInstanceId());
            Collection<Tag> tags = new ArrayList();
            tags.add(new Tag("Name", "Manager"));
            CreateTagsRequest createTagsRequest = new CreateTagsRequest();  
            createTagsRequest.setResourceId(instance.getInstanceId());
            createTagsRequest.setTags(tags);
            CreateTagsResult tagsRsults = createTags(createTagsRequest);

它不会在线编译 createTagsRequest.setTags(tags):

The method setTags(java.util.Collection<com.amazonaws.services.workspaces.model.Tag>) in the type CreateTagsRequest is not applicable for the arguments (java.util.Collection<com.amazonaws.services.ec2.model.Tag>)

它让我可以将 'setTags' 更改为 'withTags' 和相反(循环情况)。 尝试了几种方法,查看了 AWS 文档和 Javadoc。

这是我的进口:

    import com.amazonaws.services.ec2.AmazonEC2;
import com.amazonaws.services.ec2.AmazonEC2ClientBuilder;
import com.amazonaws.services.ec2.model.Instance;
import com.amazonaws.services.ec2.model.InstanceStateName;
import com.amazonaws.services.ec2.model.InstanceType;
import com.amazonaws.services.ec2.model.Reservation;
import com.amazonaws.services.ec2.model.RunInstancesRequest;
import com.amazonaws.services.ec2.model.Tag;

编辑: 当前代码不起作用:

Collection<Tag> tags = new ArrayList<Tag>();
Tag t = new Tag();
            t.setKey("Name");
            t.setValue("Manager");
            tags.add(t);
            CreateTagsRequest createTagsRequest = new CreateTagsRequest();  
            createTagsRequest.withTags(tags);
            createTagsRequest.withResourceId(instance.getInstanceId());
            ec2.createTags(createTagsRequest);

【问题讨论】:

    标签: java amazon-web-services amazon-ec2 tags cloud


    【解决方案1】:

    您似乎从com.amazonaws.services.workspaces.model 导入了CreateTagsRequest,而不是从com.amazonaws.services.ec2.model。注意中间的wokspacesec2 之间的区别。

    【讨论】:

    • 嗯,我不这么认为。我的导入是:com.amazonaws.services.ec2.model.Tag;选角只是 Eclipse 试图修复糟糕的情况而没有成功。我也试过没有它
    • CreateTagsRequest,而不是Tag
    • 当前代码:Collection tags = new ArrayList();标记 t = 新标记(); t.setKey("姓名"); t.setValue("经理");标签.add(t); CreateTagsRequest createTagsRequest = new CreateTagsRequest(); createTagsRequest.withTags(标签); createTagsRequest.withResourceId(instance.getInstanceId()); ec2.createTags(createTagsRequest); kichik 如果可以请解释一下您的意思
    • 这是导入,而不是代码。寻找import com.amazonaws.services.workspaces.model.CreateTagsRequest
    • 也导入了,但我需要在代码中更改什么?我试图改变 Collection tags = new ArrayList();从 'Tag' 到 'CreateTagsRequest' 并且它没有编译我只需要最简单的方法来向 EC2 实例添加标签,我不介意更改我添加的所有代码......
    【解决方案2】:

    使用了来自 CreateTagsRequest 类的 withResources(instanceId) 方法,而不是 withResourceId(instanceId) 并且它有效。

    以下代码供参考:

         Collection<Tag> tags = new ArrayList<Tag>();
         Tag t = new Tag();
         t.setKey("keyname");
         t.setValue("keyvalue");
         tags.add(t);
         
         CreateTagsRequest createTagsRequest = new CreateTagsRequest();  
         createTagsRequest.withTags(tags);
         createTagsRequest.withResources(instanceId);
         
         ec2Client.createTags(createTagsRequest);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 2014-04-30
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      相关资源
      最近更新 更多