通过雾化制作 AWS AMI public
Make AWS AMI public by fog
我正在使用 fog 从 运行 实例创建一个 ami:
@fog = Fog::Compute.new(
:provider => 'AWS',
:region => 'us-west-2',
:aws_access_key_id => aws_access_key,
:aws_secret_access_key => aws_secret_key
)
@fog.create_image(instance.identity,image_name,image_description)
我可以用雾来制作这个 ami public吗?
我不知道 fog 语法,但要制作 AMI 图像 public,则需要对 AMI 图像使用 ec2:ModifyImageAttribute
操作。
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html
在这种情况下,您需要指定 AMI 映像 ID,同时将 "Launch Permission" 添加到 "all" 组。
AWS CLI 中 modify-image-attribute
的文档有一个设置 AMI 映像的示例 public:
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\"}]}"
我找到了方法,我需要在上面的代码中添加一行:
@fog.modify_image_attribute(image_id,{'Add.Group' => ['all']}
如果图片状态为'pending'(比如我的情况),就会抛出异常,所以最后修改为:
@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!'
我正在使用 fog 从 运行 实例创建一个 ami:
@fog = Fog::Compute.new(
:provider => 'AWS',
:region => 'us-west-2',
:aws_access_key_id => aws_access_key,
:aws_secret_access_key => aws_secret_key
)
@fog.create_image(instance.identity,image_name,image_description)
我可以用雾来制作这个 ami public吗?
我不知道 fog 语法,但要制作 AMI 图像 public,则需要对 AMI 图像使用 ec2:ModifyImageAttribute
操作。
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html
在这种情况下,您需要指定 AMI 映像 ID,同时将 "Launch Permission" 添加到 "all" 组。
AWS CLI 中 modify-image-attribute
的文档有一个设置 AMI 映像的示例 public:
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\"}]}"
我找到了方法,我需要在上面的代码中添加一行:
@fog.modify_image_attribute(image_id,{'Add.Group' => ['all']}
如果图片状态为'pending'(比如我的情况),就会抛出异常,所以最后修改为:
@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!'