2017-05-09 100 views
0

我运行下面的命令:AWS EC2创建卷不创建卷

aws ec2 create-volume --region eu-west-1 --availability-zone eu-west-1a --snapshot-id snap-02583b4b1fb1d2d84 

我也得到了响应:

{ 
    "SnapshotId": "snap-02583b4b1fb1d2d84", 
    "Size": 40, 
    "VolumeType": "standard", 
    "Encrypted": true, 
    "State": "creating", 
    "VolumeId": "vol-0d7bec77ac1164266", 
    "CreateTime": "2017-05-09T10:17:03.521Z", 
    "AvailabilityZone": "eu-west-1a" 
} 

然而,任何后续的命令;如:

aws ec2 wait volume-available --volume-ids vol-0d7bec77ac1164266 

返回:

Waiter VolumeAvailable failed: The volume 'vol-0d7bec77ac1164266' does not exist. 

当我看着Web界面上的卷仪表盘;我看不到卷。我检查了每个地区。

以前有人见过这种行为吗?

UPDATE

的命令出现像预期的那样工作,如果我使用不同的IAM用户对*资源*权限执行另一台计算机上。

UPDATE 2

看来,卷被加密和权限可能不被补偿的加密卷。

+0

如果它在一台计算机上而不是另一台计算机上工作,请确保您安装了最新版本的CLI。如果你在Linux上,请执行'pip install awscli --upgrade'。 –

+0

是的。原来是一个权限问题。请参阅下面的答案。我相信CLI中有一个小错误,它应该报告缺少权限而不是报告成功的创建。 –

+0

如果是这样的话,为什么它在另一台计算机上工作?它有IAM不同的凭据吗? –

回答

0

好的。我有它的工作;但我仍然认为CLI存在问题。

正在创建的卷被加密。因此需要权限来处理加密卷。

我能得到它的工作的唯一方法是添加以下权限:

"kms:CreateGrant", 
"kms:ListGrants", 
"kms:RevokeGrant", 
"kms:Encrypt", 
"kms:Decrypt", 
"kms:ReEncrypt*", 
"kms:GenerateDataKey*", 
"kms:DescribeKey", 
"ec2:AttachVolume", 
"ec2:DescribeVolume*", 
"ec2:Describe*", 
"ec2:CreateVolume", 
"ec2:DescribeSnapshots", 
"ec2:AttachVolume" 

的加密卷上执行命令时,该工具不会报告任何权限错误。

我已经提出了这个问题:https://github.com/aws/aws-cli/issues/2592

0

我无法重现您的问题。

我做了以下步骤:

创建具有这些权限作为内嵌策略的IAM用户:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Statement1", 
      "Effect": "Allow", 
      "Action": [ 
       "ec2:CreateVolume" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     } 
    ] 
} 

创建的卷从快照(作为用户):

aws ec2 create-volume --region ap-southeast-2 --availability-zone ap-southeast-2a --snapshot-id snap-abcd1234 --profile xyz 

{ 
    "AvailabilityZone": "ap-southeast-2a", 
    "Encrypted": false, 
    "VolumeType": "standard", 
    "VolumeId": "vol-03e2eee8e64f593d3", 
    "State": "creating", 
    "SnapshotId": "snap-abcd1234", 
    "CreateTime": "2017-05-11T05:17:23.960Z", 
    "Size": 30 
} 

卷已成功创建。

该用户没有权限拨打VolumeAvailable,所以我用不同的用户:

aws ec2 wait volume-available --volume-ids vol-03e2eee8e64f593d3 --region ap-southeast-2 --profile normal 

没有错误,立即命令完成。

+0

用户有什么权限? –

+0

权限显示在我的答案的开头。他们只在'*'上有'ec2:CreateVolume'。如果您询问调用'VolumeAvailable'的用户,他们拥有管理员权限。要点是创建EBS卷只需要'CreateVolume'。也许你在错误的地区运行了'volume-available'? –

+0

没有。就像我说的。我检查了每个地区。即使在网络用户界面上。它绝对没有创造它。但是当我给它*权限时,它就起作用了。 –

1

我有这个相同的问题试图从加密的快照创建一个卷。在创建卷命令显示成功完成:

{ 
    "AvailabilityZone": "eu-west-1a", 
    "Encrypted": true, 
    "VolumeType": "gp2", 
    "VolumeId": "vol-xxxxx", 
    "State": "creating", 
    "Iops": 100, 
    "SnapshotId": "snap-xxxxx", 
    "CreateTime": "2017-07-14T21:03:24.430Z", 
    "Size": 10 
} 

然而,音量似乎从来没有被创建并试图描述它不能被发现。

问题是创建Snapshot时使用的KMS密钥正在等待删除。通过取消KMS删除并重新启用卷成功创建的密钥。