首页 > 解决方案 > 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

标签: amazon-web-servicesamazon-ec2aws-cli

解决方案


看起来 awscli 的最新版本是 1.16.x,所以我会更新 awscli 并重新测试。这可能已修复(或在您正在运行的版本 1.2.x 中不受支持)。

更一般地说,我认为您不能安全地使用 apt-get 在 Ubuntu 上安装最新的 awscli。我将卸载它并按照Linux 的 awscli 说明使用 pip 或捆绑的安装程序。


推荐阅读