我有两个AWS账户:
我要在测试帐户中使用Packer创建AMI,然后将AMI复制到产品帐户。
我该如何使用Packer做到这一点,并在完成工作后删除实际的AMI?
我已经检查了以下问题,但他们没有解决我的问题:
答案 0 :(得分:3)
您可以通过在Packer中使用ami_users指令来完成此行为。这将允许指定的帐户从源帐户访问创建的AMI。
如果您希望每个帐户中都有AMI的深层副本(不同的ID),则必须使用凭据将packer build
重新运行到另一个帐户中。
答案 1 :(得分:1)
如上回答,请使用 ami_users 。
我们在生产中使用此方法的方式是,通常在“ vars”文件夹中有每个环境的vars文件。 vars JSON文件中的值之一是"nonprod_account_id":"1234567890"
。然后在packer.json中,如下使用 ami_users 。
"ami_users": ["{{user `nonprod_account_id`}}"]
答案 2 :(得分:0)
我不清楚您为什么要在将AMI复制到另一个帐户后将其从构建它的帐户中删除,而不是仅仅在“目标”帐户中构建它,除非可能存在更强的访问限制或其他功能在Prod中,但是在那种情况下,我会质疑在“松动”的AMI中进行复制。
要专门进行复制,您可能需要此插件。
https://github.com/martinbaillie/packer-post-processor-ami-copy
从源帐户中删除可能需要“手动”,或者可以通过清除过程自动执行,该清除过程会删除早于特定时间段的AMI。自2019年5月起,可以在一个帐户中创建并共享未加密和加密AMI的访问权限(与其他答案相比,复制/利用加密AMI的功能是新的功能)。
有关此新功能的几个Amazon帖子。
本文概述了使用Packer在帐户之间复制AMI而不只是引用另一个帐户中的源的过程,您可以扩展它以执行清理。
此示例从上面显示了一个更新的过程,该过程使用授予多个帐户之间的访问权限的功能来避免创建AMI的多个副本,而每个AMI /帐户都希望使用该副本。