如何使用打包程序将文件从 S3 下载到 EC2 实例以构建自定义 AMI

How to download file from S3 into EC2 instance using packers to build custom AMI

我正在尝试使用加壳程序创建自定义 AMI。 我想在自定义 AMI 上安装一些特定软件,我的设置存在于 S3 存储桶中。但是似乎没有像cfn-init那样直接在加壳器中下载S3文件的方法。

那么有什么方法可以使用打包程序在 EC2 实例上下载文件。

安装 awscli in the instance and use iam_instance_profile 以授予实例从 S3 获取文件的权限。

假设 aws cli 已经安装在 Ec2 上,在 shell 配置器中使用下面的示例命令。

sudo aws s3 cp s3://bucket-name/path_to_folder/file_name /home/ec2-user/temp

我可以设想这样一个无效的实例。

在 aws 上构建映像时,您使用本地信用。在构建映像时,此构建打包程序映像有一个打包程序用户,不是您,因此也不是您的信用,无法访问 S3(如果私有)

一个选项https://github.com/enmand/packer-provisioner-s3

两个选项,使用 local-shell provisioner 你使用 aws S3 cp 将 S3 文件下载到你的机器,然后文件 provisioner 上传到构建器镜像中的正确文件夹,然后你可以使用远程-shell 对文件进行任何其他工作。我选择这个是因为虽然它的代码更多,但是当我分享我的构建时它更通用,其他人不需要安装其他东西

三选一等等。 2019 packer GitHub 中提到了一个增强功能,可以使用本地汽车提供 S3 直通,但官方路线图上没有。