2017-05-09 212 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刪除並重新啓用捲成功創建的密鑰。