amazon-web-services - EC2 运行实例错误:列表的参数元素的值无效(“加密”):列表类型的 BlockDeviceMappings
问题描述
根据 AWS CLI 文档,我可以指定应加密卷并相应地提供 KMS 密钥 ID。我无法让它工作......我在这里做错了什么?
aws ec2 run-instances --block-device-mappings '[ {"DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": true, "VolumeSize": 10, "VolumeType": "gp2" }}, {"DeviceName": "/dev/sdb1", "Ebs": { "DeleteOnTermination": false, "VolumeSize": 20, "VolumeType": "gp2", "Encrypted": true, "KmsKeyId": "f80d1a0e-9295-4ca7-8f27-2ce79fec9838" }} ]' --image-id $BASE_AMI --count 1 --instance-type $INSTANCE_TYPE --security-group-ids $SEC_GROUPS --subnet-id $SUBNET --key-name "$KEY_PAIR"
用于块设备映射的漂亮打印 JSON 以方便参考:
[
{
"DeviceName": "/dev/sda1",
"Ebs": {
"DeleteOnTermination": true,
"VolumeSize": 10,
"VolumeType": "gp2"
}
},
{
"DeviceName": "/dev/sdb1",
"Ebs": {
"DeleteOnTermination": false,
"VolumeSize": 20,
"VolumeType": "gp2",
"Encrypted": true,
"KmsKeyId": "f80d1a0e-9295-4ca7-8f27-2ce79fec9838"
}
}
]
当我运行上述命令时,我收到了您在主题行中看到的错误。如果我交换 Encrypted 和 KmsKeyId 值的顺序,它会抱怨 KmsKeyId 。
FWIW,我通过 apt 在 Ubuntu 14.04 上安装了 AWS CLI。
john@dev3:/home/john$ aws --version
aws-cli/1.2.9 Python/3.4.3 Linux/3.13.0-161-generic
解决方案
看起来 awscli 的最新版本是 1.16.x,所以我会更新 awscli 并重新测试。这可能已修复(或在您正在运行的版本 1.2.x 中不受支持)。
更一般地说,我认为您不能安全地使用 apt-get 在 Ubuntu 上安装最新的 awscli。我将卸载它并按照Linux 的 awscli 说明使用 pip 或捆绑的安装程序。
推荐阅读
- r - 数据框中两列的双重匹配
- python - QSortFilterProxyModel 按日期范围过滤
- java - JavaFX getText()、setText()、toString() 给出空指针
- android - 如何防止 Android CursorLoader 重新加载?
- sql-server - 将 SQL Server 数据库迁移到 Azure 时出错
- php - 网站主页正在加载,其他页面均无效
- git - 设置 GitLab 以更新 Bitbucket 项目
- c++ - 在共享库中隐藏“_init”和“_fini”符号
- php - PDO bindParam 返回相同的结果但参数错误
- python - 尽管有 Proxymesh,来自 Ec2 的请求仍被网站阻止