AWS OpsWorks:如何设置每层的默认 EBS 卷大小?

Posted

技术标签:

【中文标题】AWS OpsWorks:如何设置每层的默认 EBS 卷大小?【英文标题】:AWS OpsWorks: how to set the default EBS volume size per layer? 【发布时间】:2014-06-24 09:51:45 【问题描述】:

我确定我遗漏了一些明显的东西,但我找不到设置每层默认 EBS 卷大小的方法。默认情况下,我在该层上启动的每个实例都有一个 10GB 的卷。

在“层”配置窗格中,我尝试添加所需大小的 EBS 卷,但它不允许我将其安装在“/”上。

我的应用程序安装在 /srv/www 需要这个额外的大小,但文档说此时不应安装卷:

不要将 Amazon EBS 卷挂载到以下挂载点。如果 实例重新启动,autofs 可能会使用它们来挂载临时 设备而不是您的音量。

/srv/www

【问题讨论】:

【参考方案1】:

在撰写本文时,您无法使用 OpsWorks 更改默认根卷大小。但是,当使用 API 的 create-instance command 时,您可以提供 block device mapping(就像在 EC2 上一样)并定义大小。

例如,您可以创建一个包含以下内容的文件,为方便起见,将其命名为“instance.json”:


    "InstanceType": "c4.large", 
    "RootDeviceType": "ebs", 
    "BlockDeviceMappings": [
        
            "DeviceName": "ROOT_DEVICE", 
            "Ebs": 
                "VolumeSize": 20, 
                "VolumeType": "gp2", 
                "DeleteOnTermination": true
            
        
    ] 

然后您可以执行如下命令来创建具有所需根卷大小的实例,使用该文件并替换正确的堆栈和层 ID:

aws opsworks create-instance --cli-input-json file://./instance.json --stack-id <stack-id-number-here> --layer-ids <one-or-more-layer-id-numbers-here>

如果你更喜欢 oneliner,虽然有点笨重:

aws opsworks create-instance --stack-id <stack-id-number-here> --layer-ids <one-or-more-layer-id-numbers-here> --instance-type <e.g. c4.large> --block-device-mappings '["DeviceName":"ROOT_DEVICE","Ebs":"VolumeType":"gp2","VolumeSize":20]'

请注意,此过程仅在创建实例时有效,之后您无法修改它,除非手动修改。

【讨论】:

我可以使用 CloudFormation 实现这一目标吗? @Casper 这无法通过 CloudFormation 实现。 Here 你可以看到不支持BlockDeviceMappings。但是,您可以使用Custom Resources 调用Lambda function 来创建/修改/更新这些资源。 所以你是说我需要先启动一个实例,然后修改根卷? @Casper,您能否通过 CloudFormation 实现这一目标? @ManishJoshi 不是 atm,我联系了 AWS 支持,这是一个功能请求。【参考方案2】:

您不能在 / 处挂载卷,这是根目录。 不幸的是,您无法在 OpsWorks 中设置根设备大小。 但是你可以在其他地方安装一个卷,比如/mnt/www 并在那里进行符号链接。

【讨论】:

是的,我最终做了这样的事情......遗憾的是,它不能更容易地完成。 我会将此作为功能请求。 :) @spangenberg 我正在寻找这个确切的东西。我们将日志存储几天,它们偶尔会超过限制。希望实例从更多空间开始。谢谢。 我了解您的问题。同时,请将 EBS 卷挂载到 /var/log 或存储日志的任何位置。 @spangenberg,我真的希望它很快就会出现,因为它也最终允许连接通用或 PIOPS SSD 根设备!

以上是关于AWS OpsWorks:如何设置每层的默认 EBS 卷大小?的主要内容,如果未能解决你的问题,请参考以下文章