【问题标题】:AWS .Net SDK Create an Amazon EC2 instance with a specific EBS Volume SizeAWS .Net SDK 创建具有特定 EBS 卷大小的 Amazon EC2 实例
【发布时间】:2016-02-14 19:34:27
【问题描述】:

我正在开发一个以编程方式创建和管理 ec2 实例的 .net Web 应用程序。截至目前,当我创建新实例时,磁盘卷的大小是固定的:我相信由映像 (AMI) 定义。

我想在创建新实例时预定义磁盘卷的大小,这样我之后就不需要运行调整大小操作。那可能吗?哪种方法最好?

我有几个想法:

  1. 在 RunInstancesRequest 对象上定义卷大小。但我认为没有这样的选择。

  2. 创建具有不同磁盘大小的 AMI 映像副本,并使用该副本请求新的 EC2 实例。这个可以吗?

  3. 还有其他/更好的方法吗?

如果有帮助,我附上我目前用来请求新实例的代码:

var launchRequest = new RunInstancesRequest()
    {
        ImageId = amiID,
        InstanceType = type,
        MinCount = 1,
        MaxCount = 1,
        SecurityGroupIds = groups
    };
    var launchResponse = ec2Client.RunInstances(launchRequest);
    var instances = launchResponse.Reservation.Instances;
    var myInstance = instances.First();

【问题讨论】:

    标签: asp.net amazon-web-services amazon-ec2 aws-sdk ec2-ami


    【解决方案1】:

    您需要在launchRequest中设置EbsBlockDeviceVolumeSize的(整数GiB)值。BlockDeviceMappings strong> 发布前。

    请记住,如果您指定快照,则卷大小必须等于或大于快照大小。此外,如果您从快照创建卷并且未指定卷大小,则默认为快照大小。

    提示:始终检查 DeleteOnTermination 的布尔值,不要假设根卷的默认值为 True在 AWS 控制台中。

    You can find out more on EbsBlockDevice properties here

    【讨论】:

    • 其实这不是我想要的。这将创建第二个 EBS 卷:一个基于 ImageId,另一个空的在 launchRequest.BlockDeviceMappings 上定义。我更喜欢有一个更大的音量。
    • 我认为您可以通过将 SnapshotId 参数设置为 AMI 根卷快照的 ID 来完成您想要的操作
    • 我不太明白。 AMI 没有 SnapshotId,是吗?
    • 这是 AMI 根卷的快照 ID(您尝试更改其大小的那个)
    • 您可以在 AMI 详细信息选项卡的块设备下找到它。您应该会看到类似于 /dev/sda1=snap-d4571cc7:30:true:gp2 的内容(此处的 SnapshotId 为:snap-d4571cc7)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 2019-02-11
    • 2019-04-21
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多