如何在AWS CodePipeline中添加被.gitignore忽略的证书文件?
解决方案
完全可以将这类被.gitignore排除的敏感证书文件接入CodePipeline流程,无需上传到Git仓库,以下是两种生产环境常用的落地方式:
方案1:AWS Secrets Manager 注入(适用于小体积证书/密钥文件)
- 先将证书内容或完整的证书文件上传到AWS Secrets Manager,多份证书可分别创建密钥条目,也可打包为JSON结构存入同一个密钥
- 为CodePipeline服务角色、流水线用到的CodeBuild服务角色添加
secretsmanager:GetSecretValue权限,关联你创建的对应密钥ARN - 修改CodeBuild的构建规范文件
buildspec.yml,在pre_build阶段添加命令,调用AWS CLI拉取密钥内容并生成对应证书文件到项目指定目录,示例命令如下:
aws secretsmanager get-secret-value --secret-id <你的证书密钥ID> --query SecretString --output text > ./certs/app-cert.pem
- 后续Elastic Beanstalk部署阶段会直接将构建生成的包含证书的完整应用包上传部署,全程不会涉及Git仓库存储敏感文件
方案2:私有S3桶拉取(适用于大体积证书包)
- 将所有证书文件上传到开启服务器端加密、禁止公共访问的私有S3存储桶
- 为CodeBuild/CodePipeline的服务角色添加对应S3桶的
s3:GetObject权限 - 在
buildspec.yml的pre_build阶段添加批量拉取命令,将证书文件同步到项目对应目录,示例命令如下:
aws s3 cp s3://<你的证书桶名称>/certs/ ./certs/ --recursive
注意:不要在构建日志中输出任何证书内容避免敏感信息泄露,可将拉取证书命令的输出重定向到/dev/null,或关闭对应步骤的日志打印功能。
内容的提问来源于stack exchange,提问作者Christian Guzman
相关产品推荐
相关产品推荐

