You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Knife指定加密EBS卷?含报错排查与命令示例

如何用Knife指定加密EBS卷并解决参数报错问题

没问题,你完全可以通过Knife启动使用加密EBS卷的实例——哪怕你的自定义AMI基于非加密的gp2快照。你遇到的ERROR: --ebs-encrypted option requires valid --ebs-size to be specified报错看起来有点矛盾,明明命令里已经加了--ebs-size 30却还是触发提示,大概率是参数顺序或者老版本knife-ec2 gem的解析bug导致的,下面给你几个可行的解决方案:

方案1:调整卷相关参数的顺序

在你使用的knife-ec2 0.15.x/0.16.x版本中,--ebs-encrypted需要和--ebs-size这类卷属性参数放在一起,最好紧跟在AMI参数之后,让Knife能正确关联这些配置。修改后的命令如下:

knife ec2 server create -I ami-c1c03dbc --ebs-size 30 --ebs-encrypted -f t2.small -S chef -i /Users/admin/chef --ssh-user chef --subnet subnet-c613cacb --json-attributes '{"policy_name": "webserver", "policy_group": "qa_aws"}' -N webserver03 -g "sg-a70c5bc4" --region us-east-1 --server-connect-attribute private_ip_address --bootstrap-template /.chef/bootstrap/bootstrap_qa.erb --availability-zone us-east-1e

方案2:显式指定EBS卷类型

因为你的AMI是基于gp2快照创建的,显式加上--ebs-type gp2可以消除Knife在解析卷配置时的歧义,避免误判参数缺失:

knife ec2 server create -I ami-c1c03dbc --ebs-size 30 --ebs-type gp2 --ebs-encrypted -f t2.small -S chef -i /Users/admin/chef --ssh-user chef --subnet subnet-c613cacb --json-attributes '{"policy_name": "webserver", "policy_group": "qa_aws"}' -N webserver03 -g "sg-a70c5bc4" --region us-east-1 --server-connect-attribute private_ip_address --bootstrap-template /.chef/bootstrap/bootstrap_qa.erb --availability-zone us-east-1e

方案3:升级knife-ec2 gem版本

你当前使用的0.15.0/0.16.0版本比较老旧,后续的版本已经修复了不少参数解析的问题。考虑到你的Chef版本是13.3.42,推荐升级到兼容的0.20.x系列版本:

gem install knife-ec2 -v 0.20.0

升级后再执行你原来的命令,应该就能正常触发EBS卷加密了。

额外说明

当你基于非加密快照创建加密EBS卷时,AWS会在实例启动过程中自动完成快照数据的加密写入,这个流程Knife是可以正确触发的,只要卷配置参数被正确解析就没问题。

内容的提问来源于stack exchange,提问作者TyMac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:22:05