Voor het geval iemand op zoek is naar een antwoord, hier is het advies dat ik heb gekregen van aws business support.
Alle code die in Elastic Beanstalk wordt geïmplementeerd, moet "stateless" zijn, I.E. Breng nooit rechtstreeks wijzigingen aan in een actieve Beanstalk-instantie met behulp van SSH of FTP.... Dit zal inconsistenties en/of gegevensverlies veroorzaken!- Elastic Beanstalk is niet ontworpen voor applicaties die niet stateless zijn. De omgeving is ontworpen om in afwachting op en neer te schalen op uw netwerk / CPU-belasting en bouw nieuwe instanties vanaf een basis-AMI. Als een instance problemen heeft of de onderliggende hardware, zal Elastic Beanstalk deze actieve instances beëindigen en vervangen door nieuwe instances. Vandaar dat er geen codewijziging moet worden toegepast of "rechtstreeks" moet worden gedaan op een bestaande instantie, aangezien nieuwe instanties zich niet bewust zijn van deze directe wijzigingen. ALLE wijzigingen / code moeten worden geüpload naar de Elastic Beanstalk-console of de CLI-tools en naar alle actieve instanties worden gepusht. Meer informatie over Elastic Beanstalk-ontwerpconcepten kan worden gelezen op de volgende link http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts .design.html
Voorgestelde oplossing:met het bovenstaande in gedachten, als u MongoDB gebruikt om toepassingsgegevens op te slaan, zou onze aanbeveling zijn om de MongoDB-omgeving los te koppelen van uw Node.js-toepassing.I.E Maak een MongoDB-server buiten Elastic Beanstalk, bijvoorbeeld door MongoDB rechtstreeks op een EC2-instantie en laat uw Elastic Beanstalk Node.js-toepassing verbinding maken met MongoDB Server met behulp van verbindingsinstellingen in uw app.
-MongoDB maken Hieronder vindt u enkele voorbeeldkoppelingen die van pas kunnen komen in uw scenario voor het maken van een MongoDB-server. Implementeer MongoDB op EC2,https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/ MongoDB node-clienthttps://docs.mongodb.org/getting-started/node /klant/ MongoDB op de AWS Cloud snelstartgidshttp://docs.aws .amazon.com/quickstart/latest/mongodb/architecture.html
-Toevoegen van omgevingsvariabelen aan Elastic Beanstalk om te verwijzen naar uw MongoDB-server Nadat u uw MongoDB-server hebt gemaakt, kunt u de benodigde verbindingsinstellingen doorgeven aan uw Elastic Beanstalk-omgeving met behulp van omgevingsvariabelen. Voorbeeld met behulp van .ebextensions .config waarmee u Mongo-URL / poorten / gebruikers kunt toevoegen enz..
option_settings:- option_name:MONGO_DB_URLvalue:"Uw interne IP-adres van MongoDB EC2"
Hieronder vindt u informatie over het gebruik van omgevingseigenschappen en hoe u deze kunt lezen vanuit uw toepassing.http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#create_deploy_nodejs_custom_container-envprop En informatie over het gebruik van .ebextensions .config is te vinden op de volgende linkhttp ://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html
Als alternatief kunt u ook een omgevingsvariabele instellen met behulp van de cli of via de AWS Consoleeb cli set omgevingsvariabelen kunnen worden gelezen via de onderstaande link.http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html AWS-console gebruikenOm systeemeigenschappen in te stellen (AWS Management Console)Open de Elastic Beanstalk-console.Navigeer naar de beheerconsole voor uw omgeving.Kies Configuratie.Kies Configuratie.Kies Bewerken in het gedeelte Softwareconfiguratie.Onder Omgevingseigenschappen, maak uw naam / waarden ...
Toegang tot omgevingsconfiguratie-instellingenIn de Node.js-omgeving die wordt uitgevoerd in AWS Elastic Beanstalk, hebt u toegang tot de omgevingsvariabelen met behulp van process.env.ENV_VARIABLE, vergelijkbaar met het volgende voorbeeld.process.env.MONGO_DB_URLprocess.env.PARAM2
Samenvatting:Samenvattend zou ik de volgende stappen aanbevelen om MongoDB te integreren met Elastic Beanstalk-omgevingen. Stap 1) Maak een MongoDB-server buiten Elastic Beanstalk Stap 2) Maak uw Node.js-toepassing in Elastic Beanstalk die verbinding maakt met uw MongoDB-server