2012-12-31 19 views
11

Pracuję nad aplikacją internetową clojure, używając Leiningen 2 do kompilacji i wdrożenia. To bardzo waniliowa aplikacja internetowa i używam kompozytu, pierścienia i łodygi fasoli. Moja aplikacja musi używać zarówno poświadczeń bazy danych, jak i poświadczeń S3 i nie jestem pewien, jak najlepiej przechowywać i mieć do nich dostęp w mojej aplikacji.poświadczenia bazy danych i leiningen?

Jaki jest typowy sposób obsługi poufnych danych, takich jak poświadczenia bazy danych, które należy wdrożyć w mojej aplikacji przy użyciu programu leiningen 2?

Możliwe jest ustawienie zmiennych środowiskowych na elastycznej fasoli, ale w miarę możliwości chciałbym ominąć tę trasę.

Odpowiedz

9

dwa sposoby, aby to zrobić. Jedną z nich jest użycie zmiennych środowiskowych, co jest miłe, jeśli wszystkie twoje wartości konfiguracyjne są ciągami i nie potrzebujesz arbitralnego zagnieżdżania. Najlepiej tutaj jest Environ: https://github.com/weavejester/environ

Inną dobrą opcją jest odczyt plików danych Clojure z ścieżki klasy. Możesz sprawdzić ustawienia konfiguracji dev w swoim projekcie za pomocą katalogu dev-resources i umieścić konfigurację produkcyjną w ścieżce klas za pomocą narzędzia do wdrażania. Zaletą tutaj jest config może być dowolne wartości Clojure z zagnieżdżonych mapy itp Najpiękniejszych rzeczą jest to, Carica: https://github.com/sonian/carica

+0

dziękuję za to, environ jest dokładnie tym, czego potrzebowałem! jeszcze raz dziękuję, a także za lein, to jest fantastyczne –

5

Bardzo lubię używać zmiennych środowiskowych do śledzenia zmiennych środowisk. ;-)

Inne przekazać je za pomocą -Ddb=foo opcje i czytając je (System/getProperty "db")

1

Spójrz na Confijulate - biblioteki stworzyłem do wdrożenia tego wzoru:

https://github.com/bbbates/confijulate

Hasła lub klucze można przechowywać w pliku zewnętrznym i ładować za pomocą właściwości systemowej. W funkcji, która łączy się z S3 lub dB, możesz odszyfrować go za pomocą klucza załadowanego za pomocą tego samego mechanizmu. Upewnij się tylko, że plik, który czytasz, jest czytelny tylko dla internauty (tomcat lub jboss lub jakikolwiek kontener, którego używasz z beanstalk).

Powiązane problemy