ElasticBeanstalk: Ustaw typ instancji i grupę zabezpieczeń z pliku konfiguracyjnego

10

Mam problem ze zdefiniowaniem typu wystąpienia i grup zabezpieczeń za pomocą .ebextensions/*.configplików w katalogu głównym mojego pakietu aplikacji.

Krótko mówiąc, mam dwa pliki konfiguracyjne, które wyglądają tak:

.ebextensions/01-options.config:

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

i .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

Teraz zmienne środowiskowe są ustawiane, więc wiem, że czyta oba pliki konfiguracyjne, ale grupa zabezpieczeń i typ instancji nie są ustawiane - nawet gdy odbudowuję środowisko, instancje są nadal tworzone jak w t1.microprzypadku domyślnych grup zabezpieczeń - moje ustawienia nie są stosowane.

Czego tu brakuje? Jak mogę zdefiniować typ wystąpienia za pomocą .configplików?

Josh Hunt
źródło
Czy sprawdziłeś dzienniki po uruchomieniu aplikacji? Może narzekał na jedną z twoich opcji? Po przeczytaniu tego mam wrażenie, że tylko nazw wymienionych w tej tabeli są obsługiwane, z powodu tego zdania: [...] The following table displays the namespaces that are supported for each container type. [...]. Ale wydaje się dziwne, gdyby tak było.
Bazze

Odpowiedzi:

11

Powinieneś być w stanie wykorzystać to, co masz w tym pliku konfiguracyjnym, dla przestrzeni nazw uruchamiania konfiguracji, ale potrzebujesz pojedynczych cudzysłowów wokół przestrzeni nazw i wartości, tak jak w pierwszych 2, które działają.

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

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

Pamiętaj też, aby uważać na błędy w dziennikach eb, jeśli używasz eb cli 3.x. Mam nadzieję, że to pomaga.

Tyler
źródło
Próbowałem tego i zarówno oryginalnego, jak i wersji z cytatami. Żaden mi nie działał. Inne ustawienia w moim .config, takie jak MinSize i MaxSize, działają. Skończyło się na tym, że musiałem użyć: eb create -i 't2.medium' ?!
Charles,
@Charles, tak, już nie uruchamiam InstanceType, nie jestem pewien, na czym polega problem, ponieważ, jak wspomniałeś, działają inne opcje związane z instancją.
Tyler
Dziękuję za potwierdzenie. Zamierzając opublikować pytanie na forum AWS ... zdam raport, jeśli znajdę odpowiedź.
Charles,
1
Wydaje mi się, że problem dotyczy tego problemu. Wygląda na to, że niektóre elementy są ustawione na poziomie interfejsu API i musisz je zaktualizować PO utworzeniu środowiska. 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

Jak wspomniano w komentarzach, ustawienia w plikach konfiguracyjnych są ignorowane, jeśli są również ustawione na poziomie środowiska (a ustawienie dla InstanceTypejest automatycznie tworzone na poziomie środowiska).

Jeśli wolisz zachować ustawienia w plikach konfiguracyjnych, musisz je usunąć ze środowiska, możesz to zrobić za InstanceTypepomocą następującego polecenia:

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

Zobacz także dokumentację AWS, aby dowiedzieć się o innych sposobach zmiany ustawień poziomu środowiska.

Samuel Fekete
źródło