ElasticBeanstalk: Tetapkan jenis instance dan grup keamanan dari file konfigurasi

10

Saya mengalami masalah dalam menentukan jenis instance dan grup keamanan melalui .ebextensions/*.configfile di root bundel aplikasi saya.

Secara singkat, saya memiliki dua file konfigurasi yang terlihat seperti ini:

.ebextensions/01-options.config:

option_settings:
  [...]
  - namespace: 'aws:elasticbeanstalk:application:environment'
    option_name: CONFIG_FILE_ONE
    value: '01-options.config'
  [...]

dan .ebextensions/02-app-test-env.config:

option_settings:
  - namespace: 'aws:elasticbeanstalk:application:environment'
    option_name: NODE_ENV
    value: 'Test'

  - namespace: 'aws:elasticbeanstalk:application:environment'
    option_name: CONFIG_FILE_TWO
    value: '02-app-test-env'

  - namespace: aws:autoscaling:launchconfiguration
    option_name: InstanceType
    value: t2.micro

  - namespace: aws:autoscaling:launchconfiguration
    option_name: SecurityGroups
    value: sg-ys75dfs2

Sekarang, variabel lingkungan sedang diset, jadi saya tahu itu membaca kedua file konfigurasi, tetapi grup keamanan dan tipe contoh tidak diatur - bahkan ketika saya membangun kembali lingkungan, instance masih dibuat seperti t1.microdengan grup keamanan default - pengaturan saya tidak diterapkan.

Apa yang kulewatkan di sini? Bagaimana saya bisa mendefinisikan tipe instance menggunakan .configfile?

Josh Hunt
sumber
Apakah Anda memeriksa log setelah aplikasi aktif dan berjalan? Mungkin itu dikeluhkan pada salah satu opsi Anda? Setelah membaca ini saya mendapat kesan bahwa hanya ruang nama yang tercantum dalam tabel yang didukung, karena kalimat ini: [...] The following table displays the namespaces that are supported for each container type. [...]. Tapi rasanya aneh jika itu yang terjadi.
Bazze

Jawaban:

11

Anda harus dapat menggunakan apa yang Anda miliki di file konfigurasi itu untuk launchconfiguration namespace, tetapi Anda membutuhkan tanda kutip tunggal di sekitar namespace dan nilai seperti yang Anda miliki di 2 yang pertama yang berfungsi.

- namespace: 'aws:autoscaling:launchconfiguration'
  option_name: InstanceType
  value: 't2.micro'

- namespace: 'aws:autoscaling:launchconfiguration'
  option_name: SecurityGroups
  value: 'sg-ys75dfs2'

Juga, pastikan untuk melihat kesalahan dengan eb log jika menggunakan eb cli 3.x. Semoga itu bisa membantu.

Tyler
sumber
Saya mencoba ini baik itu asli dan versi dengan kutipan. Tidak ada yang berhasil untuk saya. Pengaturan lain di .config saya seperti MinSize dan MaxSize berfungsi. Akhirnya harus menggunakan: eb create -i 't2.medium' ?!
Charles
@ Charles, ya saya tidak lagi membuat InstanceType berfungsi juga, tidak yakin masalah apa yang ada di sana karena seperti yang Anda sebutkan, opsi terkait contoh lainnya berfungsi.
Tyler
Terima kasih atas konfirmasinya. Akan memposting pertanyaan di forum AWS ... akan melaporkan kembali jika saya menemukan jawabannya.
Charles
1
Jadi saya pikir saya mungkin ke masalah apa yang ada di sini, sepertinya item tertentu diatur pada tingkat API dan Anda harus memperbaruinya SETELAH penciptaan lingkungan. If you use the Elastic Beanstalk console or EB CLI to create environments, and you want to set these options using configuration files or saved configurations, you can remove the options settings with the AWS CLI or EB CLI after the environment is created.( docs.aws.amazon.com/elasticbeanstalk/latest/dg/… )
Tyler
2

Seperti disebutkan dalam komentar, pengaturan dalam file konfigurasi diabaikan jika mereka juga menetapkan pada tingkat lingkungan, (dan pengaturan untuk InstanceTypesecara otomatis dibuat pada tingkat lingkungan).

Jika Anda lebih suka menyimpan pengaturan Anda di file konfigurasi, Anda harus menghapusnya dari lingkungan, Anda dapat melakukannya untuk InstanceTypedengan perintah berikut:

aws elasticbeanstalk update-environment --environment-name my-env --options-to-remove Namespace=aws:autoscaling:launchconfiguration,OptionName=InstanceType

Lihat juga dokumen AWS untuk cara lain mengubah pengaturan tingkat lingkungan.

Samuel Fekete
sumber