Search code examples
amazon-web-servicesamazon-ec2aws-sdk-java

getInstanceTypesFromInstanceRequirements always return 0 instance types


I am running the following API:

GetInstanceTypesFromInstanceRequirementsResult instanceRequirementsResult = this.amazonEC2Client
            .getInstanceTypesFromInstanceRequirements(new GetInstanceTypesFromInstanceRequirementsRequest()
                    .withInstanceRequirements(new InstanceRequirementsRequest().
                                                    withVCpuCount(new VCpuCountRangeRequest().withMin(0).withMax(100)).
                                                    withMemoryMiB(new MemoryMiBRequest().withMin(0).withMax(100))).
                                                    withArchitectureTypes(ArchitectureType.X86_64).
                                                    withVirtualizationTypes(VirtualizationType.Hvm).withMaxResults(100));

As per the docs, this is the minimum number of parameters that you need to pass. But this returns 0 instances. What did I miss?


Solution

  • From docs:

    MemoryMiB:

    The minimum and maximum amount of memory, in MiB.

    Type: MemoryMiBRequest object

    Required: Yes

    The parameter MemoryMiB is expressed in MB. So with a Max of 100MB, you are not obtaining results.

    Try changing it to a higher value (e.g. 4096 = 4GB) or omitting the 'Max' field to set as unlimited:

    Max

    The maximum amount of memory, in MiB. To specify no maximum limit, omit this parameter.

    Type: Integer

    Required: No