[英]How to allow packer to access CodeCommit during AMI build?
使用包裝程序構建AMI時,我想從CodeCommit克隆我的FreeTier git存儲庫。 這是難以置信的挑戰,而且記錄不充分。
這終於對我有用。 這是Ubuntu 16.04 hvm:ebs作為基礎映像,因為它將安裝現代且有效的git和awscli。 14.04有很多問題,最后不值得理清。
{
"variables": {
"aws_access_key": "",
"aws_secret_key": ""
},
"builders": [{
"type": "amazon-ebs",
"name": "aws",
"access_key": "{{user `aws_access_key`}}",
"secret_key": "{{user `aws_secret_key`}}",
"iam_instance_profile": "packer",
"region": "us-east-1",
"source_ami": "ami-840910ee",
"instance_type": "t2.micro",
"ssh_username": "ubuntu",
"ami_name": "myproject {{timestamp}}"
}],
"provisioners": [{
"type": "shell",
"inline": [
"sleep 30",
"sudo apt-get update",
"sudo apt-get upgrade -y",
"sudo apt-get install -y git awscli python-virtualenv",
"sudo install -o ubuntu -g ubuntu -m 755 -d /opt/scratch",
"virtualenv /opt/scratch/venv",
"git config --global credential.helper '!aws codecommit credential-helper $@'",
"git config --global credential.UseHttpPath true",
"git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/myproject /opt/scratch/venv/src/myproject",
"/opt/scratch/venv/bin/pip install -r /opt/scratch/venv/src/myproject/requirements.txt"
]
}]
}
在IAM控制台中, iam:PassRole
將使用的用戶需要iam:PassRole
策略才能使用iam_instance_profile
指令。
同樣在IAM控制台中,您將需要為EC2創建角色,並為其AWSCodeCommitReadOnly
策略。
請注意, --profile default
中缺少--profile default
,這是有意的。 使用該角色時,沒有~/.aws/credential
文件~/.aws/credential
默認配置文件。 相反, aws-cli
將使用分配給實例的角色,從而允許其從CodeCommit克隆
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.