仅具有角色的AWS交叉帐户访问CodeCommit仓库(无静态凭据)

Mik*_*e A 0 git amazon-ec2 amazon-web-services aws-cli aws-codecommit

我在AWS账户1111中有一个CodeCommit REPO1.我需要在EC2实例中克隆REPO1,这些实例将在AWS账户2222中定期启动和终止.启动EC2以在短时间内(分钟)执行一些批处理作业,然后以自动方式终止.

在不生成静态凭证的情况下,如何在2222中使用角色启动EC2实例,从1111克隆REPO1.必须使用bash/CLI自动完成该过程.

我一直在我的桌子上撞了几天,现在无济于事.

小智 5

您需要在帐户1111中创建一个角色(R1):

  • 信托账户2222以承担它
  • 具有访问存储库REPO1的必要权限

然后,您需要确保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>
Run Code Online (Sandbox Code Playgroud)

然后,您需要确认是否已正确设置权限,您可以执行以下操作:

aws --profile cross-account-role get-repository --repository-name REPO1
Run Code Online (Sandbox Code Playgroud)

一旦这个工程,你要配置的混帐客户端使用证书辅助用正确的配置文件,在你~/.gitconfig运行:

git config --global credential.helper '!aws codecommit --profile cross-account-role credential-helper $@'
git config --global credential.UseHttpPath true
Run Code Online (Sandbox Code Playgroud)