使用AWS Codebuild时在requirements.txt中访问私有GitHub Django仓库
解决AWS CodeBuild访问私有GitHub仓库权限问题的方案
针对你遇到的Permission denied (publickey). fatal: Could not read from remote repository.错误,以下是几种可行的解决方法:
方法一:使用SSH密钥对
- 生成SSH密钥对:在本地执行
ssh-keygen -t ed25519 -C "codebuild-access",一路回车生成无密码的密钥对(id_ed25519和id_ed25519.pub)。 - 添加公钥到GitHub:打开目标私有仓库的Settings → Deploy keys,点击Add deploy key,粘贴公钥内容,按需勾选Allow write access,保存。
- 存储私钥到AWS Secrets Manager:登录AWS控制台,进入Secrets Manager创建新密钥,将私钥内容作为Secret string保存,记录密钥ARN。
- 配置CodeBuild构建规范(buildspec.yml):
- 给CodeBuild服务角色添加
secretsmanager:GetSecretValue权限。 - 在buildspec的
install阶段添加步骤:install: commands: - mkdir -p ~/.ssh - aws secretsmanager get-secret-value --secret-id <你的密钥ARN> --query SecretString --output text > ~/.ssh/id_ed25519 - chmod 600 ~/.ssh/id_ed25519 - ssh-keyscan github.com >> ~/.ssh/known_hosts - pip install -r requirements.txt
- 给CodeBuild服务角色添加
方法二:使用GitHub Personal Access Token(PAT)
- 创建GitHub PAT:登录GitHub,进入Settings → Developer settings → Personal access tokens → Tokens (classic),生成新token,勾选
repo权限,保存token值。 - 存储PAT到AWS Secrets Manager:将PAT作为Secret string保存,记录密钥ARN。
- 修改requirements.txt地址:把SSH格式地址替换为
git+https://${GITHUB_PAT}@github.com/your-username/private-repo.git。 - 配置CodeBuild构建规范:
- 给CodeBuild服务角色添加Secrets Manager访问权限。
- 在buildspec中注入环境变量并安装依赖:
env: secrets-manager: GITHUB_PAT: <你的PAT密钥ARN> install: commands: - pip install -r requirements.txt
方法三:使用CodeBuild GitHub OAuth集成
- 在CodeBuild项目配置中,将源代码提供商设为GitHub,通过OAuth授权CodeBuild访问你的GitHub账户/组织。
- 修改requirements.txt中的仓库地址为HTTPS格式(无需带PAT):
git+https://github.com/your-username/private-repo.git。 - 确保CodeBuild服务角色权限配置完整,此时CodeBuild会通过OAuth自动完成私有仓库身份验证。
内容的提问来源于stack exchange,提问作者David A
相关产品推荐
相关产品推荐

