如何将ECS容器连接到私有Git仓库?

4

我看了这篇文章:Github 部署密钥(Deploy Keys)

根据我所读到的内容,它将客户端视为一个静态机器,始终具有用于克隆仓库的SSH设置。然而,在ECS中,客户端机器会变化。我是否需要在每个容器上每次设置SSH?

我的问题是从AWS的角度来看的,是否可以设置某种“角色”,以便每当我们部署服务时,它都可以访问一个私有的GitHub存储库?


1
当您说ECS客户端机器时,您是指为集群提供动力的主机EC2实例吗?此外,您想从主机机器或容器中访问存储库?您的用例是什么? - Ashan
1
将“角色”嵌入您的容器中,可以是启动脚本或编辑Dockerfile。 - Banjo Obayomi
嗨,Ashan,我的使用情况是容器内运行的代码需要调用Github存储库。 - Calvin Raveenthran
2个回答

2
您可以将私钥内容存储在AWS Secrets Manager中。然后,您可以使用AWS CLI访问它,如下所示:
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-west-2:foocompany:secret:secret-name-X1cUDA | python -c 'import sys, json; print json.load(sys.stdin)["SecretString"]' > ~/.ssh/id_rsa
chmod 400 ~/.ssh/id_rsa

您可能需要设置类似于秘密权限的权限

{ "Version": "2012-10-17",
"Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Principal": {"AWS": "arn:aws:iam::foocompany:user/user"},
            "Resource": "arn:aws:secretsmanager:us-west-2:238513131754:secret:arn:aws:secretsmanager:us-west-2:foocompany:secret:secret-name-X1cUDA"
        }
    ]
} 

1
需要在容器内部运行的代码需要调用Github仓库。这意味着容器必须以绑定挂载.ssh/id_rsa/.ssh_id_rsa.pub的方式启动,允许容器作为协作者向GitHub进行身份验证。
SSH不是访问私有仓库的唯一方法:挂载PAT(个人访问令牌)可以使容器使用HTTPS URL。
但是在两种情况下,容器都需要挂载所需的文件以进行适当的身份验证,以便访问远程私有仓库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接