Java 使用API创建AmazonEC2实例

Java 使用API创建AmazonEC2实例,java,amazon-ec2,Java,Amazon Ec2,com.amazonaws.services.ec2是否包含从现有AMI创建全新ec2实例的方法?我希望通过Java SDK而不是web管理控制台来实现这一点。RunInstances是方法,它应该在SDK中 以下是使用Amazon AWS SDK for Java创建EC2实例的示例: // CONNECT TO EC2 InputStream credentialsAsStream = Thread.currentThread().getContextClassLoader().getRe

com.amazonaws.services.ec2是否包含从现有AMI创建全新ec2实例的方法?我希望通过Java SDK而不是web管理控制台来实现这一点。

RunInstances是方法,它应该在SDK中

以下是使用Amazon AWS SDK for Java创建EC2实例的示例:

// CONNECT TO EC2

InputStream credentialsAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("AwsCredentials.properties");
Preconditions.checkNotNull(credentialsAsStream, "File 'AwsCredentials.properties' NOT found in the classpath");
AWSCredentials credentials = new PropertiesCredentials(credentialsAsStream);

AmazonEC2 ec2 = new AmazonEC2Client(credentials);
ec2.setEndpoint("ec2.eu-west-1.amazonaws.com");

// CREATE EC2 INSTANCES
RunInstancesRequest runInstancesRequest = new RunInstancesRequest()
    .withInstanceType("t1.micro")
    .withImageId("ami-62201116")
    .withMinCount(2)
    .withMaxCount(2)
    .withSecurityGroupIds("tomcat")
    .withKeyName("xebia-france")
    .withUserData(Base64.encodeBase64String(myUserData.getBytes()))
;

RunInstancesResult runInstances = ec2.runInstances(runInstancesRequest);

// TAG EC2 INSTANCES
List<Instance> instances = runInstances.getReservation().getInstances();
int idx = 1;
for (Instance instance : instances) {
  CreateTagsRequest createTagsRequest = new CreateTagsRequest();
  createTagsRequest.withResources(instance.getInstanceId()) //
      .withTags(new Tag("Name", "travel-ecommerce-" + idx));
  ec2.createTags(createTagsRequest);

  idx++;
}
//连接到EC2
InputStream CredentialAsstream=Thread.currentThread().getContextClassLoader().getResourceAsStream(“AwsCredentials.properties”);
Premissions.checkNotNull(credentialsAsStream,“在类路径中找不到文件'AwsCredentials.properties');
AWSCredentials credentials=新属性redentials(credentialsAsStream);
AmazonEC2 ec2=新的AmazonEC2客户端(凭据);
ec2.setEndpoint(“ec2.eu-west-1.amazonaws.com”);
//创建EC2实例
RunInstanceRequest RunInstanceRequest=新的RunInstanceRequest()
.withInstanceType(“t1.micro”)
.withImageId(“ami-62201116”)
.withMinCount(2)
.withMaxCount(2)
.使用安全组ID(“tomcat”)
.withKeyName(“xebia france”)
.withUserData(Base64.encodeBase64String(myUserData.getBytes()))
;
RunInstancesResult runInstances=ec2.runInstances(runInstancesRequest);
//标记EC2实例
列表实例=runInstances.getReservation().getInstances();
int-idx=1;
例如(实例:实例){
CreateTagsRequest CreateTagsRequest=新建CreateTagsRequest();
createTagsRequest.withResources(instance.getInstanceId())//
.带标签(新标签(“姓名”,“旅行电子商务-”+idx));
ec2.createTags(createTagsRequest);
idx++;
}
源代码(创建RDS、EC2和ELB实例)可在

希望这有帮助

Cyrille

var launchRequest=new runInstanceRequest()
 var launchRequest = new RunInstancesRequest()
                {
                    ImageId = amiID,
                    InstanceType = ConfigurationManager.AppSettings["AwsInstanceType"],
                    MinCount = 1,
                    MaxCount = 1,
                    KeyName = keyPairName,
                    SecurityGroupIds = groups,
                    SubnetId = ConfigurationManager.AppSettings["AwsSubnetId"],

                };
                RunInstancesResponse runInstancesResponse = amazonEc2client.RunInstances(launchRequest);
                var InstanceId = runInstancesResponse.Reservation.Instances[0].InstanceId;
                var trequest = new CreateTagsRequest();
                trequest.Resources=new List<string>(){InstanceId};
                List<Tag> tags=new List<Tag>();
                Tag tag=new Tag("Name","TestCodeFinal");
                tags.Add(tag);
                trequest.Tags = tags;
                amazonEc2client.CreateTags(trequest);
                Reservation reservation = runInstancesResponse.Reservation;
{ ImageId=amiID, InstanceType=ConfigurationManager.AppSettings[“AwsInstanceType”], MinCount=1, MaxCount=1, KeyName=keyPairName, SecurityGroupId=组, SubnetId=ConfigurationManager.AppSettings[“AwsSubnetId”], }; RunInstanceResponse RunInstanceResponse=amazonEc2client.RunInstances(启动请求); var InstanceId=runInstanceResponse.Reservation.Instances[0].InstanceId; var trequest=new CreateTagsRequest(); Resources=newlist(){InstanceId}; 列表标签=新列表(); 标签标签=新标签(“名称”、“TestCodeFinal”); 标签。添加(标签); 标签=标签; amazonEc2client.CreateTags(trequest); 预订预订=RunInstanceResponse.Reservation;
非常感谢您。我还需要一种能力来区分我开始的实例和所有其他实例。你知道这样做的好方法吗?你有几个选择。最简单的方法是使用CreateTags向代码中创建的实例添加一个标记(但每个实例总共只能添加10个标记);然后从DescribeInstances返回这些实例(也可以在web控制台中查看)关于这一点的清晰而简单的文章:上面是C#而不是Java。