我在AWS账户1111中有一个CodeCommit REPO1。我需要在EC2实例中克隆REPO1,这些实例将在AWS账户2222中定期启动和终止。启动EC2以执行一些批处理作业短时间(分钟),然后以自动方式终止。
如果不生成静态凭据,我如何使用角色在2222中启动EC2实例,从1111克隆REPO1。必须使用bash / CLI自动完成该过程。
我一直在我的桌子上撞了几天,现在无济于事。
答案 0 :(得分:5)
您需要在帐户1111中创建一个角色(R1):
然后,您需要确保EC2实例的实例角色具有AssumeRole权限。这允许您从EC2实例中假设R1。
现在,在帐户2222的EC2实例中,您应该设置一个通过角色访问REPO1的配置文件。您可以通过在〜/ .aws / config文件中添加类似于以下内容的内容来完成此操作:
[profile cross-account-role]
role_arn = arn:aws:iam::<1111>:role/<R1>
credential_source = Ec2InstanceMetadata
external_id = <ExternalId of R1>
output = json
region = <Region where REPO1 is>
然后,您需要确认是否已正确设置权限,您可以执行以下操作:
aws --profile cross-account-role get-repository --repository-name REPO1
一旦这样做,你想通过运行:{/ p>在你的~/.gitconfig
中配置git客户端以使用带有正确配置文件的凭证助手。
git config --global credential.helper '!aws codecommit --profile cross-account-role credential-helper $@'
git config --global credential.UseHttpPath true