Uraian singkat Amazon Elastic Beanstalk mengatakan:
Elastic Beanstalk memungkinkan Anda "membuka kap" dan mempertahankan kendali penuh ... bahkan meneruskan variabel lingkungan melalui konsol Elastic Beanstalk.
http://aws.amazon.com/elasticbeanstalk/
Bagaimana cara melewatkan variabel lingkungan lain selain yang ada di konfigurasi Elastic Beanstalk?
Jawaban:
Untuk mengingatkan siapa pun yang menggunakan
.ebextensions/*.config
cara: saat ini Anda dapat menambahkan, mengedit, dan menghapus variabel lingkungan di antarmuka web Elastic Beanstalk.Variabel berada di bawah Konfigurasi → Konfigurasi Perangkat Lunak:
Membuat vars
.ebextensions
seperti dalam jawaban Onema masih berfungsi.Ini bahkan lebih disukai, misalnya jika Anda akan menerapkan ke lingkungan lain nanti dan takut lupa untuk mengaturnya secara manual, atau jika Anda tidak masalah dengan memasukkan nilai ke kontrol sumber. Saya menggunakan campuran keduanya.
sumber
ENV["CUSTOM_ENV"]
akan kembali"something-something"
.Hanya 5 nilai yang membatasi, atau Anda mungkin ingin memiliki nama variabel lingkungan khusus. Anda dapat melakukannya dengan menggunakan file konfigurasi. Buat direktori di root proyek Anda dengan nama
.ebextensions /
Kemudian buat file bernama environment.config (file ini bisa disebut apa saja tetapi harus memiliki ekstensi .config) dan tambahkan nilai berikut
Setelah Anda menerapkan aplikasi, Anda akan melihat nilai baru ini di bawah Detail Lingkungan -> Edit Konfigurasi -> Penampung
untuk informasi lebih lanjut, periksa dokumentasi di sini: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-options
Memperbarui
Untuk mencegah komitmen ke nilai repositori Anda seperti kunci API, rahasia, dan sebagainya, Anda dapat meletakkan nilai placeholder.
Nanti Anda dapat membuka panel admin AWS (Detail Lingkungan -> Edit Konfigurasi -> Penampung) dan memperbarui nilainya di sana. Menurut pengalaman saya, nilai-nilai ini tidak berubah setelah penerapan berikutnya.
Perbarui 2 Seperti yang dikatakan @Benjamin dalam komentarnya, sejak tampilan dan nuansa baru diluncurkan pada 18 Juli 2013, dimungkinkan untuk menentukan sejumlah variabel lingkungan langsung dari konsol:
Configuration > Software Configuration > Environment Properties
sumber
command: "nrsysmond-config --set license_key={$NR_INSTALL_KEY}"
Di AMI Java8 Tomcat8 2016, ElasticBeanstalk gagal menyetel variabel lingkungan dari konfigurasi web. Mereka sebenarnya menyetel properti jvm -D sebagai gantinya.
- "Properti berikut diteruskan ke aplikasi sebagai variabel lingkungan. Pelajari lebih lanjut."
Pernyataan ini tidak benar untuk Java Tomcat ami. Amazon tidak menetapkan ini sebagai variabel lingkungan. Mereka ditetapkan sebagai properti Sistem yang diteruskan pada baris perintah ke Tomcat sebagai properti -D untuk jvm. Metode di Java untuk mendapatkan variabel lingkungan tidak sama untuk mendapatkan properti. System.getenv vs System.getProperty
Saya ssh ke dalam kotak dan memverifikasi bahwa variabel lingkungan tidak pernah disetel. Namun, di log tomcat saya bisa melihat properti -D disetel.
Saya telah mengubah kode saya untuk memeriksa kedua lokasi sekarang sebagai solusi.
sumber
Amazon Linux 2017.03 v2.5.4 with Java8
juga tidak menyetel env.In general, however, environment properties are passed only to the application and can't be viewed by connecting an instance in your environment and running env.
Variabel Anda tidak disetel seperti skrip login.bashrc
. Bagaimanapun Anda benar, variabel Tomcat diteruskan sebagai properti. (Lihat bagian atas halaman tertaut.)AWS akan menafsirkan string template CloudFormation di variabel lingkungan Anda. Anda dapat menggunakan ini untuk mengakses informasi tentang lingkungan EB Anda di dalam aplikasi Anda:
Di antarmuka web AWS, hal berikut ini akan dievaluasi sebagai nama lingkungan Anda (perhatikan tanda centang di bagian belakang):
Atau, Anda dapat menggunakan
.ebextensions/*.config
dan membungkus template CloudFormation dengan tanda centang (`):sumber
Alternatifnya, Anda dapat menggunakan CLI Elastic Beanstalk untuk menyetel variabel lingkungan.
Untuk menyetel variabel lingkungan:
eb setenv FOO=bar
Untuk melihat variabel lingkungan:
eb printenv
sumber
Detail Lingkungan -> Edit Konfigurasi -> Penampung
sumber
Ini tampaknya menjadi satu-satunya cara untuk mengatur ENV dengan nilai dinamis di pohon kacang. Saya menemukan solusi yang berfungsi untuk pengaturan multi-buruh pelabuhan saya:
1) Tambahkan ini ke Dockerfile Anda sebelum membangun + mengunggah ke repositori ECS Anda:
2) Di file Dockerrun.aws.json Anda, buat volume:
3) Pasang volume ke wadah Anda
4) Di file .ebextensions / options.config Anda, tambahkan blok container_commands seperti ini:
5) eb deploy dan ENVS Anda harus tersedia di container docker Anda
Anda dapat menambahkan lebih banyak ENV dengan menambahkan lebih banyak container_commands seperti:
Semoga ini membantu!
sumber
X: '
{"Ref": "MyCache"},'
nilai tidak diuraikan (hanya nilainya '{"Ref": "MyCache"}
') secara default saat penampung mencoba mengaksesnya. Dengan ini, Anda dapat memiliki variabel dinamis seperti itu.