如何允许加壳程序在 AMI 构建期间访问 CodeCommit?
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_instance_profile
指令。
同样在 IAM 控制台中,您需要为 EC2 创建一个角色,并为其指定 AWSCodeCommitReadOnly
策略。
请注意 credential.helper 中缺少 --profile default
,这是故意的。使用该角色,没有 ~/.aws/credential
文件来保存默认配置文件。相反 aws-cli
将使用分配给实例的角色,这允许它从 CodeCommit
克隆
我想在使用加壳器构建 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_instance_profile
指令。
同样在 IAM 控制台中,您需要为 EC2 创建一个角色,并为其指定 AWSCodeCommitReadOnly
策略。
请注意 credential.helper 中缺少 --profile default
,这是故意的。使用该角色,没有 ~/.aws/credential
文件来保存默认配置文件。相反 aws-cli
将使用分配给实例的角色,这允许它从 CodeCommit