2012-12-31 12 views
11

Sto lavorando a un'applicazione web clojure, utilizzando leiningen 2 per la generazione e l'implementazione. È una webapp molto vanilla e sto usando compojure, ring e lein-beanstalk. La mia app deve utilizzare sia le credenziali del database che le credenziali S3 e non sono sicuro che sia il modo migliore per archiviarle e accedervi nella mia app.credenziali del database e leiningen?

Qual è il modo comune di gestire elementi sensibili come le credenziali del database, che devono essere distribuiti con la mia app, utilizzando leiningen 2?

È possibile impostare variabili di ambiente su beanstalk elastico, ma mi piacerebbe evitare quella rotta, se possibile.

risposta

9

due modi per farlo. Uno è quello di utilizzare variabili di ambiente, il che è bello se tutti i valori di configurazione sono stringhe e non è necessario il nesting arbitrario. La soluzione migliore è Environ: https://github.com/weavejester/environ

L'altra opzione è quella di leggere i file di dati Clojure dal classpath. È possibile controllare le impostazioni di configurazione di dev nel progetto con la directory dev-resources e posizionare la configurazione di produzione sul classpath con lo strumento di distribuzione. Il vantaggio è la tua config può essere valori arbitrari Clojure con mappe nidificate, ecc La cosa più bella di questo è Carica: https://github.com/sonian/carica

+0

grazie per questo, environ è esattamente ciò di cui avevo bisogno! grazie ancora, e anche per lein, è fantastico –

5

Sono piuttosto appassionato di utilizzare variabili di ambiente per tenere traccia di ambienti variabili. ;-)

Altri passano utilizzando -Ddb=foo opzioni e la loro lettura con (System/getProperty "db")

1

Date un'occhiata a Confijulate - una libreria che ho creato per implementare questo modello:

https://github.com/bbbates/confijulate

È possibile memorizzare le password o le chiavi in ​​un file esterno e caricarlo tramite una proprietà di sistema. Nella funzione che si collega a S3 o al dB, è possibile decodificarlo utilizzando una chiave caricata tramite lo stesso meccanismo. Assicurati che il file letto sia leggibile solo dall'utente web (tomcat o jboss o qualsiasi altro contenitore stai usando con beanstalk).

Problemi correlati