2016-08-02 49 views
2

我使用霧從運行實例創建一個AMI讓AWS AMI公衆?

+0

您是否收到任何錯誤? – Andrej

+0

ami創建正常,但默認情況下是私密的。 –

回答

0

我發現如何做到這一點,我需要添加一行到上面的代碼:

@fog.modify_image_attribute(image_id,{'Add.Group' => ['all']} 

如果圖像具有(在我的情況等)狀態「等待處理」,則它會拋出異常,所以最終的修改是:

@fog = Fog::Compute.new(
     :provider => 'AWS', 
     :region => 'us-west-2', 
     :aws_access_key_id => aws_access_key, 
     :aws_secret_access_key => aws_secret_key 
    ) 
data = @fog.create_image(instance.identity,image_name,image_description) 

image_id = data.body['imageId'] 

print 'Waiting ami to come up' 

begin 
    @fog.modify_image_attribute(image_id,{'Add.Group' => ['all']}) 
rescue 
    print(".") 
    sleep(10) 
    retry 
end 

puts 'READY!' 
-1

我不知道霧的語法,但爲了讓您的AMI圖像公開,那麼您可以在AMI圖像上使用ec2:ModifyImageAttribute動作。

http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html

在這種情況下,你會用加入了「啓動權限」到「所有」組沿指定AMI圖像ID。

在AWS CLI爲modify-image-attribute的文檔已經設置的AMI圖像公共的例子:

http://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html

aws ec2 modify-image-attribute --image-id ami-5731123e 
    --launch-permission "{\"Add\": [{\"Group\":\"all\"}]}"