You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Amazon Linux 2钩子配置Elastic Beanstalk访问私有Git仓库

解决方案

以下是基于Amazon Linux 2平台钩子实现pipenv访问私有Git仓库依赖的完整方案:

步骤1:准备部署密钥并安全存储

  • 生成专门用于私有包仓库访问的SSH密钥对,将公钥配置为对应GitHub/Bitbucket仓库的只读访问密钥
  • 将生成的私钥文件上传到你管控的私有S3存储桶中,关闭该私钥文件的公共访问权限,示例存储路径为s3://你的私有桶名/eb-secrets/shared_package_deploy_key

步骤2:配置EB实例访问权限

找到Elastic Beanstalk环境对应的EC2实例角色(默认角色名为aws-elasticbeanstalk-ec2-role),为其添加如下权限策略,允许实例读取S3上存储的私钥:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::你的私有桶名/eb-secrets/shared_package_deploy_key"
        }
    ]
}

步骤3:编写prebuild平台钩子

Amazon Linux 2的prebuild阶段钩子会在依赖安装流程之前执行,刚好可以提前配置好SSH访问环境:

  1. 在项目根目录下创建层级目录.platform/hooks/prebuild/
  2. 在该目录下新建脚本01_configure_private_repo_ssh.sh,内容如下:
#!/bin/bash
set -e

# 创建root用户的SSH配置目录(EB安装依赖默认使用root身份执行)
mkdir -p /root/.ssh
chmod 700 /root/.ssh

# 从S3拉取私有仓库部署私钥
aws s3 cp s3://你的私有桶名/eb-secrets/shared_package_deploy_key /root/.ssh/shared_package_deploy_key
chmod 600 /root/.ssh/shared_package_deploy_key

# 配置SSH访问规则
cat > /root/.ssh/config << EOF
Host bitbucket.org
  IdentityFile /root/.ssh/shared_package_deploy_key
EOF

# 添加Git托管平台主机公钥到授信列表,避免主机验证失败
ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts

如果你使用的是GitHub私有仓库,将上述配置中的bitbucket.org替换为github.com即可。

  1. 本地为该脚本添加可执行权限:
    chmod +x .platform/hooks/prebuild/01_configure_private_repo_ssh.sh

步骤4:部署验证

你项目中原有的Pipfile配置无需修改,将新增的.platform目录和项目代码一起打包部署到EB环境即可,pipenv将可以正常通过SSH拉取私有仓库的依赖包。

注意:禁止将部署私钥直接提交到项目代码仓库,必须通过S3+IAM权限管控的方式分发,避免密钥泄露。

内容的提问来源于stack exchange,提问作者djvg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:45:04