ElasticBeanstalk: Defina o tipo de instância e o grupo de segurança do arquivo de configuração

10

Estou com problemas para definir o tipo de instância e os grupos de segurança por meio de .ebextensions/*.configarquivos na raiz do meu pacote de aplicativos.

Resumidamente, tenho dois arquivos de configuração que se parecem com isso:

.ebextensions/01-options.config:

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

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

Agora, as variáveis ​​de ambiente estão sendo definidas, então eu sei que está lendo os dois arquivos de configuração, mas o grupo de segurança e o tipo de instância não estão sendo definidos - mesmo quando eu reconstruo o ambiente, as instâncias ainda são criadas como t1.micronos grupos de segurança padrão - minhas configurações não estão sendo aplicados.

O que estou perdendo aqui? Como posso definir o tipo de instância usando .configarquivos?

Josh Hunt
fonte
Você verificou os logs após o aplicativo estar em funcionamento? Talvez tenha reclamado de uma de suas opções? Depois de ler este eu tenho a impressão de que apenas os espaços de nomes listados na tabela é suportado, devido a esta frase: [...] The following table displays the namespaces that are supported for each container type. [...]. Mas parece estranho se esse for o caso.
Bazze 13/01/2015

Respostas:

11

Você deve poder usar o que possui nesse arquivo de configuração para o espaço de nome de configuração de inicialização, mas precisa de aspas simples ao redor do espaço de nome e valor como você tem nos dois primeiros que estão funcionando.

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

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

Além disso, verifique se há erros nos logs do eb se estiver usando o eb cli 3.x. Espero que ajude.

Tyler
fonte
Tentei isso tanto no original quanto na versão com aspas. Nem funcionou para mim. Outras configurações no meu .config, como MinSize e MaxSize, estão funcionando. Acabou tendo que usar: eb create -i 't2.medium' ?!
Charles
@ Charles, sim, eu não estou mais conseguindo que o InstanceType funcione, não sei qual é o problema, porque, como você mencionou, as outras opções relacionadas à instância funcionam.
Tyler
Obrigado pela confirmação. Indo postar a pergunta no fórum da AWS ... apresentará um relatório se eu descobrir a resposta.
Charles
Pergunta do fórum da AWS: forums.aws.amazon.com/thread.jspa?threadID=218096
Charles
1
Então, acho que posso entender qual é o problema aqui, parece que certos itens estão definidos no nível da API e você deve atualizá-los APÓS a criação do ambiente. 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

Conforme mencionado nos comentários, as configurações nos arquivos de configuração serão ignoradas se elas também forem definidas no nível do ambiente (e a configuração para InstanceTypeserá criada automaticamente no nível do ambiente).

Se você preferir manter suas configurações nos arquivos de configuração, é necessário removê-las do ambiente, faça isso InstanceTypecom o seguinte comando:

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

Consulte também os documentos da AWS para outras maneiras de alterar as configurações no nível do ambiente.

Samuel Fekete
fonte