web-dev-qa-db-fra.com

Créer une instance Amazon EC2 avec une API

Com.amazonaws.services.ec2 contient-il une méthode pour créer une nouvelle instance EC2 à partir d'une AMI existante? Je cherche à le faire à partir du SDK Java, pas de la console de gestion Web.

28
Dave

RunInstances est la méthode, il devrait être dans le SDK. 

11
Joe

Voici un exemple pour créer des instances EC2 avec Amazon AWS SDK pour Java:

// 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++;
}

Le code source (créer des instances RDS, EC2 et ELB) est disponible à l'adresse http://code.google.com/p/xebia-france/source/browse/training/xebia-spring-travel/trunk/xebia-spring- travel-Amazon-aws/src/main/Java/fr/xebia/demo/Amazon/aws/AmazonAwsInfrastructureMaker.java? spec = svn1781 & r = 1781

J'espère que cela t'aides,

Cyrille

68
Cyrille Le Clerc
 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;
0
Viral Prajapati