试图创建ami的加密副本

时间:2017-09-23 00:55:46

标签: ruby amazon-web-services

我有以下ruby代码:

mysql -u root -p

在上面的代码中,preimage_id是上面引用的区域_region中的已知图像。

当我跑步时,我得到:

sts = Aws::STS::Client.new

stsresp = sts.assume_role(
    :role_arn => _role_arn,
    :role_session_name => "provisioning_vpc_query"
)

ec2 = Aws::EC2::Client.new(
    session_token: stsresp.credentials["session_token"],
    region: _region,
    access_key_id: stsresp.credentials["access_key_id"],
    secret_access_key: stsresp.credentials["secret_access_key"]
)

# ...
p "got image: #{preimage_id}, create encrypted copy..."

resp = ec2.copy_image({
    encrypted: true,
    name: oname,
    source_image_id: preimage_id,
    source_region: _region,
    dry_run: false
})

我可以通过控制台手动执行此操作,没有任何问题。

你能帮我弄清楚出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

事实证明,我试图在它出现之前复制ami'。添加一行等待可以解决问题:

sts = Aws::STS::Client.new

stsresp = sts.assume_role(
    :role_arn => _role_arn,
    :role_session_name => "provisioning_vpc_query"
)

ec2 = Aws::EC2::Client.new(
    session_token: stsresp.credentials["session_token"],
    region: _region,
    access_key_id: stsresp.credentials["access_key_id"],
    secret_access_key: stsresp.credentials["secret_access_key"]
)

# ...   
p "got image: #{preimage_id}, create encrypted copy..."

ec2.wait_until(:image_available, {image_ids: [preimage_id]})

resp = ec2.copy_image({
    encrypted: true,
    name: oname,
    source_image_id: preimage_id,
    source_region: _region,
    dry_run: false
})