Administrar instancias Amazon EC2 - AWS SDK for Java 2.x

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Administrar instancias Amazon EC2

Crear una instancia

Cree una nueva instancia Amazon EC2 llamando al método runInstances de Ec2Client, proporcionando un objeto RunInstancesRequest que contenga la Imagen de máquina de Amazon (AMI) que se va a usar y un tipo de instancia.

Importaciones

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.InstanceType; import software.amazon.awssdk.services.ec2.model.RunInstancesRequest; import software.amazon.awssdk.services.ec2.model.RunInstancesResponse; import software.amazon.awssdk.services.ec2.model.Tag; import software.amazon.awssdk.services.ec2.model.CreateTagsRequest; import software.amazon.awssdk.services.ec2.model.Ec2Exception;

Código

public static String createEC2Instance(Ec2Client ec2,String name, String amiId ) { RunInstancesRequest runRequest = RunInstancesRequest.builder() .imageId(amiId) .instanceType(InstanceType.T1_MICRO) .maxCount(1) .minCount(1) .build(); RunInstancesResponse response = ec2.runInstances(runRequest); String instanceId = response.instances().get(0).instanceId(); Tag tag = Tag.builder() .key("Name") .value(name) .build(); CreateTagsRequest tagRequest = CreateTagsRequest.builder() .resources(instanceId) .tags(tag) .build(); try { ec2.createTags(tagRequest); System.out.printf( "Successfully started EC2 Instance %s based on AMI %s", instanceId, amiId); return instanceId; } catch (Ec2Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }

Consulte el ejemplo completo en GitHub.

Iniciar una instancia

Para iniciar una instancia Amazon EC2, llame al método startInstances de Ec2Client, proporcionando un objeto StartInstancesRequest que contenga el ID de la instancia que se va a iniciar.

Importaciones

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.StartInstancesRequest; import software.amazon.awssdk.services.ec2.model.StopInstancesRequest;

Código

public static void startInstance(Ec2Client ec2, String instanceId) { StartInstancesRequest request = StartInstancesRequest.builder() .instanceIds(instanceId) .build(); ec2.startInstances(request); System.out.printf("Successfully started instance %s", instanceId); }

Consulte el ejemplo completo en GitHub.

Detener una instancia

Para detener una instancia Amazon EC2, llame al método stopInstances de Ec2Client, proporcionando un objeto StopInstancesRequest que contenga el ID de la instancia que se va a detener.

Importaciones

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.StartInstancesRequest; import software.amazon.awssdk.services.ec2.model.StopInstancesRequest;

Código

public static void stopInstance(Ec2Client ec2, String instanceId) { StopInstancesRequest request = StopInstancesRequest.builder() .instanceIds(instanceId) .build(); ec2.stopInstances(request); System.out.printf("Successfully stopped instance %s", instanceId); }

Consulte el ejemplo completo en GitHub.

Reiniciar una instancia

Para reiniciar una instancia Amazon EC2, llame al método de rebootInstances, proporcionando un objeto RebootInstancesRequest que contenga el ID de la instancia que se va a reiniciar.

Importaciones

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.Ec2Exception; import software.amazon.awssdk.services.ec2.model.RebootInstancesRequest;

Código

public static void rebootEC2Instance(Ec2Client ec2, String instanceId) { try { RebootInstancesRequest request = RebootInstancesRequest.builder() .instanceIds(instanceId) .build(); ec2.rebootInstances(request); System.out.printf( "Successfully rebooted instance %s", instanceId); } catch (Ec2Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Consulte el ejemplo completo en GitHub.

Describir instancias

Para mostrar sus instancias, cree un objeto DescribeInstancesRequest y llame al método describeInstances de Ec2Client. Se devolverá un objeto DescribeInstancesResponse que puede utilizar para mostrar las instancias Amazon EC2 de su cuenta y región.

Las instancias se agrupan por reserva. Cada reserva se corresponde con la llamada a startInstances que lanzó la instancia. Para mostrar sus instancias, primero debe llamar al método reservations de la clase DescribeInstancesResponse y después llamar a instances en cada objeto Reservation devuelto.

Importaciones

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.DescribeInstancesRequest; import software.amazon.awssdk.services.ec2.model.DescribeInstancesResponse; import software.amazon.awssdk.services.ec2.model.Instance; import software.amazon.awssdk.services.ec2.model.Reservation; import software.amazon.awssdk.services.ec2.model.Ec2Exception;

Código

public static void describeEC2Instances( Ec2Client ec2){ String nextToken = null; try { do { DescribeInstancesRequest request = DescribeInstancesRequest.builder().maxResults(6).nextToken(nextToken).build(); DescribeInstancesResponse response = ec2.describeInstances(request); for (Reservation reservation : response.reservations()) { for (Instance instance : reservation.instances()) { System.out.println("Instance Id is " + instance.instanceId()); System.out.println("Image id is "+ instance.imageId()); System.out.println("Instance type is "+ instance.instanceType()); System.out.println("Instance state name is "+ instance.state().name()); System.out.println("monitoring information is "+ instance.monitoring().state()); } } nextToken = response.nextToken(); } while (nextToken != null); } catch (Ec2Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Los resultados se paginan; puede obtener más resultados pasando el valor devuelto del método nextToken del objeto resultante al método nextToken del nuevo objeto de la solicitud, usando el nuevo objeto de la solicitud en la siguiente llamada a describeInstances.

Consulte el ejemplo completo en GitHub.

Monitorear una instancia

Puede monitorizar distintos aspectos de las instancias Amazon EC2, como el uso de la CPU y la red, la memoria disponible y el espacio en disco restante. Para obtener más información sobre la supervisión de instancias, consulte Supervisión Amazon EC2 en la Guía del usuario de Amazon EC2 para instancias Linux.

Para iniciar la monitorización de una instancia, debe crear un objeto MonitorInstancesRequest con el ID de la instancia que se va a monitorizar y pasarlo al método monitorInstances de Ec2Client.

Importaciones

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.MonitorInstancesRequest; import software.amazon.awssdk.services.ec2.model.UnmonitorInstancesRequest;

Código

public static void monitorInstance( Ec2Client ec2, String instanceId) { MonitorInstancesRequest request = MonitorInstancesRequest.builder() .instanceIds(instanceId).build(); ec2.monitorInstances(request); System.out.printf( "Successfully enabled monitoring for instance %s", instanceId); }

Consulte el ejemplo completo en GitHub.

Detener la monitorización de instancias

Para detener la monitorización de una instancia, cree un objeto UnmonitorInstancesRequest con el ID de la instancia cuya monitorización se va a detener y pase el objeto al método unmonitorInstances de Ec2Client.

Importaciones

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.MonitorInstancesRequest; import software.amazon.awssdk.services.ec2.model.UnmonitorInstancesRequest;

Código

public static void unmonitorInstance(Ec2Client ec2, String instanceId) { UnmonitorInstancesRequest request = UnmonitorInstancesRequest.builder() .instanceIds(instanceId).build(); ec2.unmonitorInstances(request); System.out.printf( "Successfully disabled monitoring for instance %s", instanceId); }

Consulte el ejemplo completo en GitHub.

Más información