EC2 Java 开发工具包 -> 使用公有 IP 启动实例



>我正在尝试使用默认设置不分配公有 IP 的子网启动实例。

使用 aws CLI,这是通过添加--associate-public-ip-address来完成的:

aws ec2 run-instances --image-id ami-xxx --count 1 --instance-type m4.large --key-name "xxx" --subnet-id subnet-xxx --security-group-ids sg-xxx --associate-public-ip-address

使用 Java 开发工具包启动实例时如何执行相同的操作?

RunInstancesRequest runInstancesRequest = new RunInstancesRequest();
runInstancesRequest.withImageId(kAmiId)
                   .withInstanceType(kInstanceType)
                   .withMinCount(1)
                   .withMaxCount(1)
                   .withKeyName(kKeyName)
                   .withSecurityGroupIds(kSecurityGroups)
                   .withMonitoring(false)
                   .withSubnetId(kSubnet);

让它像这样工作:

InstanceNetworkInterfaceSpecification networkSpec = new InstanceNetworkInterfaceSpecification();
networkSpec.setDeviceIndex(0);
networkSpec.setSubnetId(kSubnet);
networkSpec.setGroups(Arrays.asList(kSecurityGroups));
networkSpec.setAssociatePublicIpAddress(true);
runInstancesRequest.withImageId(kAmiId)
                   .withInstanceType(kInstanceType)
                   .withMinCount(1)
                   .withMaxCount(1)
                   .withKeyName(kKeyName)
                   .withMonitoring(false)
                   .withNetworkInterfaces(networkSpec)
                   .withAdditionalInfo("--associate-public-ip-address");
RunInstancesResult result = mClient.runInstances(runInstancesRequest);

看起来您必须通过提供一个InstanceNetworkInterfaceSpecification来设置它。像这样:

List<InstanceNetworkInterfaceSpecification> interfaces = new ArrayList<InstanceNetworkInterfaceSpecification>();
interfaces.add(new InstanceNetworkInterfaceSpecification().withAssociatePublicIpAddress(true));
runInstancesRequest.withNetworkInterfaces(interfaces);

最新更新