Vraag Hoe gebruik je een privé-npm-register op Elastic Beanstalk?


We hebben een nodejs-project op Amazon Elastic Beanstalk dat gebruikmaakt van privémodules die we gebruiken nodejitsu's private npm-register.

Het verkrijgen van toegang tot het private npm-register van de elastische exemplaren was echter niet eenvoudig en is niet goed gedocumenteerd.

Wat is de beste manier om deze toegang te krijgen?


13
2017-07-28 10:18


oorsprong


antwoorden:


Geen van de andere antwoorden werkte voor mij. Na urenlang trekken van haar, hebben we het eindelijk uitgezocht. De oplossing die werkte, is bijna hetzelfde als de andere antwoorden, maar met een zeer kleine aanpassing.

  1. Stel een NPM_TOKEN omgevingsvariabele in op Elastic Beanstalk under Configuration > Software Configuration > Environment Properties.
  2. Maak een .ebextensions/npm.config het dossier. (De naam hoeft niet 'npm' te zijn.)
  3. Plaats deze inhoud in het bestand:

    files:
      "/tmp/.npmrc":
        content: |
          //registry.npmjs.org/:_authToken=${NPM_TOKEN}
    

Merk op dat het gebruikt ${NPM_TOKEN} en niet $NPM_TOKEN. Dit is vitaal. Gebruik makend van $NPM_TOKEN zullen niet werk; het moet de accolades hebben: ${NPM_TOKEN}.

Waarom zijn de accolades nodig? Geen idee. In shell / POSIX-talen, ${VAR} en $VAR zijn synoniemen. Echter, in .npmrc bestanden (op het moment van schrijven), worden variabelen zonder de accolades niet als variabelen herkend, dus moet npm een ​​iets andere syntaxisstandaard gebruiken.

BIJWERKEN

Ook heeft dit voor ons gewerkt enkel en alleen op nieuwe of gekloonde omgevingen. Om welke reden dan ook, omgevingen die niet zijn geïnitialiseerd met een /tmp/.npmrc zal het in toekomstige implementaties niet lezen voordat het wordt uitgevoerd npm install --production. We hebben talloze methoden op 4 verschillende apps geprobeerd, maar het klonen en vervangen van een omgeving is de enige methode die heeft gewerkt.


11
2017-10-14 21:26



Dus we zijn erin geslaagd om dit te laten werken door het npm userconfig-bestand te gebruiken. Zie de doc pagina voor npmrc voor meer informatie.

Wanneer een nodejs-toepassing wordt geïmplementeerd in Elastic Beanstalk, voert de root-gebruiker npm install uit. U moet dus het npm userconfig-bestand van de root schrijven dat zich op /tmp/.npmrc bevindt.

Dus als u een bestand met de naam private_npm.config (of welke naam u ook kiest) toevoegt aan uw .ebextensions-map met alle benodigde informatie, bent u klaar om te gaan. Zien AWS Elastic Beanstalk Environments aanpassen en configureren voor meer informatie.

Dus hier is hoe mijn bestand eruit ziet om nodejitsu privé register te gebruiken.

.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>

10
2017-07-28 10:18



Antwoord vanaf juni 2016.

In mijn geval hoefde ik geen .ebextension toe te voegen, ik hoefde alleen de env var in te stellen: NPM_TOKEN, lijkt erop dat elastische beanstalk stilletjes een nieuwe geweldige functie heeft toegevoegd waar ze een .npmrc gebruiken die zoekt naar NPM_TOKEN voor de gevallen waarin npm install privaten vereisen.


3
2018-06-16 17:56



Het bovenstaande antwoord als een stap in de goede richting, maar de toestemmingen en eigenaar werkten niet voor mij. Beheerd om het te laten werken met de volgende combinatie:

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>

2
2018-04-21 12:19



Plaats de onderstaande in uw .ebextensions / app.config.

files:
  "/tmp/.npmrc":
    mode: "000777"
    owner: root
    group: root
    content: |
      //registry.npmjs.org/:_authToken=$NPM_TOKEN

Waar NPM_TOKEN een omgevingsvariabele is met de waarde van uw werkelijke npmjs auth token.

Merk op dat omgevingsvariabelen binnen elasticbeanstalk kunnen en moeten worden ingesteld vanuit de Elasticbeanstalk softwareconfiguratietab van de AWS-console.

AWS Elasticbeanstalk-configuratie


2
2017-09-20 20:46