如何使用Packer构建自定义AMI时,将文件从S3下载到EC2实例?

6

我正在尝试使用Packer创建自定义AMI。

我希望在自定义AMI上安装一些特定的软件,而我的设置存储在S3存储桶中。但是似乎没有像cfn-init那样在packers中直接下载S3文件的方法。

那么,有没有办法在EC2实例上使用packers下载文件呢?


您应该能够将任何文件下载到您的 Packer AMI 中。如果您正在运行基于 Linux 的操作系统,只需使用 wget 命令;如果您在 Windows 上,则使用 Powershell 的 (New-Object System.Net.WebClient).DownloadFile 命令即可。 - Adil B
1
那将假定桶是打开的。 - BobMonk
3个回答

7

1

我可以想象一种情况,这种方法是无效的。

在使用aws构建镜像时,您使用本地凭据。虽然正在构建镜像,但此构建程序映像具有packer用户,而不是您的凭据,因此无法访问S3(如果为私有)

一种选择 https://github.com/enmand/packer-provisioner-s3

第二个选择是使用local-shell provisioner将S3文件下载到您的计算机上,然后使用file provisioner将其上传到构建器映像中的正确文件夹,然后可以使用remote-shell对文件进行任何其他处理。我选择这个选项,尽管它需要更多代码,但当我分享我的构建时,其他人不需要安装其他东西,这样更加通用

第三个选择是等待。在2019年,packer GitHub发表了一个增强功能,可以使用本地车辆提供S3直通功能,但它不在官方路线图中。


0
假设awscli已经安装在Ec2上,请在shell provisioner中使用以下示例命令。
sudo aws s3 cp s3://bucket-name/path_to_folder/file_name /home/ec2-user/temp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接