簡體   English   中英

EC2 Java SDK->使用公共IP啟動實例

[英]EC2 java sdk -> launching an instance with a public 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 SDK啟動實例時如何做同樣的事情?

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM