我看了这篇文章:Github Deploy Keys
据我所读,它像对待一台固定机器的客户端一样对待客户端,该机器始终具有ssh设置来克隆存储库。但是,在ECS中,客户端计算机会发生变化。每次在每个容器上都要设置ssh吗?
我的问题是从AWS角度出发的,是否可以设置某种“角色”,以便每当我们部署服务时,它就可以访问私有github存储库?
答案 0 :(得分:1)
容器中运行的代码需要调用github存储库。
这意味着容器必须以.ssh/id_rsa
/ .ssh_id_rsa.pub
中的bind mount开头,以允许容器作为协作者向GitHub进行身份验证。
SSH并不是访问私有存储库的唯一方法:安装PAT(个人访问令牌)将允许容器使用HTTPS URL。
但是在两种情况下,容器都需要装入正确身份验证所需的文件,以便访问远程专用存储库。
答案 1 :(得分:1)
您可以将私钥内容存储在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"
}
]
}