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

时间:2018-01-15 23:01:53

标签: git amazon-web-services amazon-ec2 aws-cli aws-codecommit

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

如果不生成静态凭据,我如何使用角色在2222中启动EC2实例,从1111克隆REPO1。必须使用bash / CLI自动完成该过程。

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

1 个答案:

答案 0 :(得分: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>

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

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