Vig*_*son 17 node.js npm nodejitsu amazon-elastic-beanstalk
我们在Amazon Elastic Beanstalk上运行了一个nodejs项目,该项目使用我们使用nodejitsu的私有npm注册表托管的私有模块.
但是,从弹性实例访问私有npm注册表并不简单,并且没有很好地记录.
设置此访问权限的最佳方法是什么?
Gre*_*n23 18
没有其他答案对我有用.经过几个小时的拔毛,我们终于明白了.有效的解决方案几乎与其他答案相同,但调整很小.
Configuration> Software Configuration> Environment Properties..ebextensions/npm.config文件.(名称不一定是'npm'.)将此内容放入文件中:
files:
"/tmp/.npmrc":
content: |
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
Run Code Online (Sandbox Code Playgroud)请注意,它使用${NPM_TOKEN}和不使用$NPM_TOKEN.这很重要.使用$NPM_TOKEN将无法正常工作; 它必须有花括号:${NPM_TOKEN}.
为什么需要花括号?不知道.在shell/POSIX语言中,${VAR}并且$VAR是同义词.但是,在.npmrc文件中(在撰写本文时),没有大括号的变量不会被识别为变量,因此npm必须使用稍微不同的语法标准.
UPDATE
此外,这仅适用于新的或克隆的环境.无论出于何种原因,未使用a初始化的环境/tmp/.npmrc在运行之前的任何未来部署中都不会读取它npm install --production.我们已经在4个不同的应用上尝试了无数的方法,但克隆和替换环境是唯一有效的方法.
Vig*_*son 10
因此,我们设法通过使用npm userconfig文件来实现这一点.有关详细信息,请参阅npmrc的doc页面.
将nodejs应用程序部署到Elastic Beanstalk时,root用户将运行npm install.因此,您需要编写root的npm userconfig文件,该文件位于/tmp/.npmrc.
因此,如果您将名为private_npm.config的文件(或您选择的任何名称)添加到.ebextensions文件夹中,并提供所需的所有信息,那么您将会很高兴.有关详细信息,请参阅自定义和配置AWS Elastic Beanstalk环境.
所以这是我的文件看起来像使用nodejitsu私人注册表.
.ebextensions/private_npm.config:
files:
#this is the npm user config file path
"/tmp/.npmrc":
mode: "000777"
owner: root
group: root
content: |
_auth = <MY_AUTH_KEY>
always-auth = true
registry = <PATH_TO_MY_REGISTRY>
strict-ssl = true
email = <NPM_USER_EMAIL>
Run Code Online (Sandbox Code Playgroud)