如何在AWS Amplify中使用GitHub托管的私有NPM包?
补充方案:AWS Amplify访问GitHub私有NPM包
针对你提到的场景,除了已梳理的4种方案外,还有以下几种更实用的实现方式:
Amplify环境变量+
.npmrc配置
在Amplify控制台的项目「环境变量」中添加GITHUB_PAT(值为带read:packages权限的GitHub个人访问令牌),然后在项目根目录创建.npmrc文件:@你的组织名:registry=https://npm.pkg.github.com/ //npm.pkg.github.com/:_authToken=${GITHUB_PAT}Amplify构建时会自动替换环境变量,本地测试只需在本地
.npmrc中填入实际令牌即可,完全不影响本地开发流程。GitHub部署密钥授权
在GitHub私有包仓库的「设置」-「部署密钥」中,添加Amplify项目的部署公钥(从Amplify控制台「部署设置」-「SSH密钥」里获取)。然后在项目.npmrc中配置SSH协议拉取包:@你的组织名:registry=https://github.com/你的组织名/私有包名.git git+ssh://git@github.com/你的组织名/私有包名.git这种方式无需令牌,通过SSH密钥实现权限控制,安全性更高。
Secrets Manager配合Amplify构建钩子
在AWS Secrets Manager中存储GitHub PAT,然后修改Amplify的amplify.yml构建配置,在preBuild阶段通过AWS CLI拉取密钥并写入临时.npmrc:preBuild: - echo "//npm.pkg.github.com/:_authToken=$(aws secretsmanager get-secret-value --secret-id github-pat --query SecretString --output text)" >> .npmrc - echo "@你的组织名:registry=https://npm.pkg.github.com/" >> .npmrc只需给Amplify的服务角色添加Secrets Manager的访问权限即可,相比CDK方案更轻量,本地测试可直接忽略该步骤用本地配置。
内容的提问来源于stack exchange,提问作者tralalala
相关产品推荐
相关产品推荐

