如何在AWS中启动具有更多存储的实例?

时间:2018-02-16 18:25:33

标签: amazon-web-services amazon-ec2 aws-sdk

我使用以下方式在AWS中运行实例:

input := &ec2.RunInstancesInput{
    // .... assign parameters
}
reservation, err := ec2session.RunInstancesWithContext(ctx, input)

我想提供存储卷的存储空间大小,就像可以在“添加存储空间”中的AWS控制台中指定一样。标签

但是,我无法为初始存储大小配置RunInstancesInput,因此它会以实例类型的默认大小启动。

稍后我可以附加另一个卷,但我想指定初始卷大小。

有可能,怎么做?

1 个答案:

答案 0 :(得分:3)

正如评论中已经建议的那样,您应该将BlockDeviceMapping添加到您的请求中。以下是如何在Java中执行此操作的示例。

private static BlockDeviceMapping blockDeviceMapping(int systemDiskSizeInGb)
{
    EbsBlockDevice ebs = new EbsBlockDevice()
            .withVolumeSize(systemDiskSizeInGb)
            .withVolumeType(VolumeType.Gp2);
    return new BlockDeviceMapping()
            .withDeviceName("/dev/sda1")
            .withEbs(ebs);
}

private static RunInstancesRequest buildInstanceRequest(String imageId, int systemDiskSizeInGb)
{
    return new RunInstancesRequest()
            .withImageId(imageId)
            .withBlockDeviceMappings(ImmutableSet.of(blockDeviceMapping(systemDiskSizeInGb)));
}

RunInstancesResult result = this.ec2Client.runInstances(request);