【问题标题】:Start ec2 instance with public ip使用公共 ip 启动 ec2 实例
【发布时间】:2016-12-02 15:52:27
【问题描述】:

我需要从我的 java 代码中启动 ec2 中的新实例。 我可以这样做:

    RunInstancesRequest runInstancesRequest = new RunInstancesRequest();

runInstancesRequest
    .withImageId(myImageId)
    .withInstanceType(myInstanceType)
    .withMinCount(INSTANCES_COUNT)
    .withMaxCount(INSTANCES_COUNT)
    .withKeyName(myKeyName)
    .withSubnetId(mySubnetId)
    .withSecurityGroupIds(mySecurityGroupId)
    .withPlacement(myPlace)
;

RunInstancesResult runInstancesResult = amazonEC2Client.runInstances(runInstancesRequest);

它会创建一个新实例。但是这个实例的“公共 DNS”和“公共 IP”字段为空。

我不需要弹性 IP。如果所有新实例都有新地址就可以了。

那么,如何更改我的请求呢?

【问题讨论】:

    标签: java amazon-ec2


    【解决方案1】:

    谢谢!我找到了解决方案:

    RunInstancesRequest runInstancesRequest = new RunInstancesRequest();
    
    InstanceNetworkInterfaceSpecification interfaceSpecification = new InstanceNetworkInterfaceSpecification()
        .withSubnetId(mySubnetId)
        .withAssociatePublicIpAddress(true)
        .withGroups(mySecurityGroupId)
        .withDeviceIndex(0);
    
    runInstancesRequest
        .withImageId(myImageId)
        .withInstanceType(myInstanceType)
        .withMinCount(INSTANCES_COUNT)
        .withMaxCount(INSTANCES_COUNT)
        .withKeyName(myKeyName)
        //.withSubnetId(mySubnetId)
        //.withSecurityGroupIds(mySecurityGroupId)
        .withPlacement(myPlace)
        .withNetworkInterfaces(interfaceSpecification)
    ;
    
    RunInstancesResult runInstancesResult = amazonEC2Client.runInstances(runInstancesRequest);
    

    我不知道什么是“DeviceIndex”,为什么它是“0”,但它可以工作。

    【讨论】:

      猜你喜欢
      • 2014-05-15
      • 2020-07-09
      • 1970-01-01
      • 2023-03-03
      • 2021-03-01
      • 2019-09-16
      • 2013-10-02
      • 1970-01-01
      相关资源
      最近更新 更多