nodejitsu のプライベート npm レジストリを使用してホストするプライベート モジュールを使用する Amazon Elastic Beanstalk で実行されている nodejs プロジェクトがあります。
ただし、エラスティック インスタンスからプライベート npm レジストリにアクセスするのは簡単ではなく、十分に文書化されていません。
このアクセス権を設定する最善の方法は何ですか?
nodejitsu のプライベート npm レジストリを使用してホストするプライベート モジュールを使用する Amazon Elastic Beanstalk で実行されている nodejs プロジェクトがあります。
ただし、エラスティック インスタンスからプライベート npm レジストリにアクセスするのは簡単ではなく、十分に文書化されていません。
このアクセス権を設定する最善の方法は何ですか?
そのため、npm userconfig ファイルを使用してこれを機能させることができました。詳細については、npmrc のドキュメント ページを参照してください。
nodejs アプリケーションが Elastic Beanstalk にデプロイされている場合、root ユーザーは npm install を実行します。そのため、/tmp/.npmrc にあるルートの npm userconfig ファイルを作成する必要があります。
したがって、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>
.npmrc
プロジェクト内でを使用することもできます。例えば...
.npmrc
registry=https://npm.mydomain.com
.gitignore
行を含める場合はこのファイルが必要になる場合がありますが、各展開に正しくバンドルされるように_authToken
しないでください。失敗したいくつかのことを試した後、この投稿.ebignore
に出くわし、プロジェクトでローカルに指定できることに気付きました。
以下を .ebextensions/app.config 内に配置します。
files:
"/tmp/.npmrc":
mode: "000777"
owner: root
group: root
content: |
//registry.npmjs.org/:_authToken=$NPM_TOKEN
NPM_TOKEN は、実際の npmjs 認証トークンの値を持つ環境変数です。
Elasticbeanstalk 内の環境変数は、AWS コンソールの Elasticbeanstalk ソフトウェア設定タブ内から設定できることに注意してください。
上記の答えは正しい方向への一歩ですが、権限と所有者はうまくいきませんでした。次の組み合わせで動作させることができました:
files:
#this is the npm user config file path
"/tmp/.npmrc":
mode: "000600"
owner: nodejs
group: nodejs
content: |
_auth = <MY_AUTH_KEY>
always-auth = true
registry = <PATH_TO_MY_REGISTRY>
strict-ssl = true
email = <NPM_USER_EMAIL>