如何为Packer的amazon-ebs builder创建的EC2实例附加角色
Packer EBS构建器临时EC2实例附加IAM角色配置说明
完全支持。Packer官方Amazon EBS构建器原生支持给构建流程中自动拉起的临时EC2实例绑定IAM实例角色,完全可以满足你在user_data环节调用AWS CLI的权限需求。
具体配置和注意事项如下:
- 核心配置字段为
iam_instance_profile,你只需要在Packer模板的amazon-ebs构建源块中添加该字段,取值为你提前在IAM中创建好的实例配置文件(Instance Profile)名称,注意这里不要直接填IAM角色名,IAM的角色无法直接绑定给EC2,必须通过关联的实例配置文件挂载。 - 最小配置参考示例:
source "amazon-ebs" "custom_ami" { region = "ap-southeast-1" source_ami = "ami-0cxxxxxxxxx" instance_type = "t3.small" ssh_username = "ubuntu" ami_name = "custom-app-ami-${formatdate("YYYYMMDD-hhmm", timestamp())}" # 绑定提前创建好的实例配置文件 iam_instance_profile = "packer-build-temp-profile" # 加载你的user_data脚本,脚本内可直接调用aws cli user_data = file("./build_init.sh") }
- 权限注意事项:你给该实例配置文件绑定的IAM角色,只需要提前授予你在user_data脚本中执行AWS CLI操作需要的对应权限即可,不需要额外给Packer本身的运行身份加这部分权限——user_data内的命令运行在临时构建实例上,AWS CLI会自动从EC2实例元数据服务拉取绑定角色的临时凭证,不需要手动在脚本里配置AK/SK。
- 注意区分两类权限身份:一类是Packer程序自身调用AWS API创建实例、生成AMI所需的执行身份权限,另一类是你给临时构建实例绑定的
iam_instance_profile对应权限,二者完全独立,按需分别配置即可,不要混为一谈。
配置完成后正常执行构建即可,Packer拉起临时EC2时会自动完成角色挂载,实例启动后user_data执行阶段就能直接拿到对应权限调用AWS CLI。
内容的提问来源于stack exchange,提问作者Massoom
相关产品推荐
相关产品推荐

