Получить подробности об экземпляре AWS EC2 с помощью RunInstancesRequest - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь получить подробности об экземпляре AWS EC2 с помощью RunInstancesRequest.Для этого я использовал AWS doc https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-ec2-instances.html.

RunInstancesRequest runInstancesRequest = new RunInstancesRequest();
runInstancesRequest.withImageId(imageId).withInstanceType(instanceType).withMinCount(1).withMaxCount(count).withSecurityGroups(securityGroupName);
RunInstancesResult runInstancesResult = amazonEC2.runInstances(runInstancesRequest);
String instance_id = runInstancesResult.getReservation().getReservationId();
//waiting for 2 minute
DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest();
describeInstancesRequest.setInstanceIds(Arrays.asList(instance_id));
DescribeInstancesResult describeInstancesResult = amazonEC2.describeInstances(describeInstancesRequest);
for(Reservation reservation : describeInstancesResult.getReservations()){
    for(Instance instance : reservation.getInstances()) {
         System.out.println(instance.getPublicDnsName());
    }
}

. Здесь я могу запустить и запустить экземпляр AWS EC2, но проблема, с которой я сталкиваюсь, заключается в том, что я не могу получить детали EC2 с помощью объекта RunInstancesResult.,Согласно документации AWS кажется, что instance_id - это booking_id, но я считаю, что это не так.Например, instance_id начинается с "i-", а booking_id - с "r-".

. Как мне получить информацию только об одном EC2, который я создал с помощью API?Поскольку я получил RunInstancesResult объект как вывод предыдущего API, возникает вопрос: как я могу получить подробности об экземпляре AWS EC2 с помощью RunInstancesRequest?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

В AWS doc возникла небольшая путаница.Они ссылаются на идентификатор резервирования как instance_id.После изменения следующих изменений в моем коде удалось отфильтровать экземпляры:

String instance_id = runInstancesResult.getReservation().getInstances()..get(0).getInstanceId();
0 голосов
/ 20 мая 2018

Резервирование - это запрос на запуск экземпляров.Например, вы можете использовать один запрос на запуск для создания двух экземпляров.Таким образом, резервирование содержит несколько экземпляров.

Если вы посмотрите на объект ответа, вы увидите, что резервирование действительно содержит несколько экземпляров, например:

{
    "OwnerId": "123456789012",
    "ReservationId": "r-08626e73c547023b1",
    "Groups": [
        {
            "GroupName": "MySecurityGroup",
            "GroupId": "sg-903004f8"
        }
    ],
    "Instances": [
        {
            "Monitoring": {
                "State": "disabled"
            },
            "PublicDnsName": null,
            "RootDeviceType": "ebs",
            "State": {
                "Code": 0,
                "Name": "pending"
            },
            "EbsOptimized": false,
            "LaunchTime": "2013-07-19T02:42:39.000Z",
            "ProductCodes": [],
            "StateTransitionReason": null,
            "InstanceId": "i-1234567890abcdef0",
            "ImageId": "ami-1a2b3c4d",
            "PrivateDnsName": null,
            "KeyName": "MyKeyPair",
etc.
...