ElasticBeanstalk: définir le type d'instance et le groupe de sécurité à partir du fichier de configuration

10

J'ai du mal à définir le type d'instance et les groupes de sécurité via des .ebextensions/*.configfichiers à la racine de mon bundle d'application.

En bref, j'ai deux fichiers de configuration qui ressemblent à ceci:

.ebextensions/01-options.config:

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

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

Maintenant, les variables d'environnement sont définies, donc je sais qu'il lit les deux fichiers de configuration, mais le groupe de sécurité et le type d'instance ne sont pas définis - même lorsque je reconstruis l'environnement, les instances sont toujours créées comme t1.microavec les groupes de sécurité par défaut - mes paramètres ne sont pas appliqués.

Qu'est-ce que j'oublie ici? Comment définir le type d'instance à l'aide de .configfichiers?

Josh Hunt
la source
Avez-vous vérifié les journaux une fois que l'application est opérationnelle? Peut-être qu'il se plaignait d'une de vos options? Après avoir lu ce que j'ai eu l'impression que seuls les espaces de noms figurant dans ce tableau est pris en charge, en raison de cette phrase: [...] The following table displays the namespaces that are supported for each container type. [...]. Mais il semble étrange que ce soit le cas.
Bazze

Réponses:

11

Vous devriez pouvoir utiliser ce que vous avez dans ce fichier de configuration pour l'espace de noms launchconfiguration, mais vous avez besoin des guillemets simples autour de l'espace de noms et de la valeur comme vous en avez dans les 2 premiers qui fonctionnent.

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

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

Assurez-vous également de rechercher les erreurs dans les journaux eb si vous utilisez eb cli 3.x. J'espère que cela pourra aider.

Tyler
la source
J'ai essayé ceci et l'original et la version avec des guillemets. Aucun n'a fonctionné pour moi. D'autres paramètres dans mon .config tels que MinSize et MaxSize fonctionnent. Vous avez fini par devoir utiliser: eb create -i 't2.medium' à la place?!
Charles
@Charles, oui, je ne fais plus fonctionner InstanceType non plus, je ne sais pas quel est le problème, car comme vous l'avez mentionné, les autres options liées à l'instance fonctionnent.
Tyler
Merçi pour la confirmation. Je vais poster la question dans le forum AWS ... je reviendrai si je trouve la réponse.
Charles
Question sur le forum AWS: forums.aws.amazon.com/thread.jspa?threadID=218096
Charles
1
Je pense donc que je pourrais être sur le problème ici, il semble que certains éléments soient définis au niveau de l'API et vous devez les mettre à jour APRÈS la création de l'environnement. 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

Comme mentionné dans les commentaires, les paramètres des fichiers de configuration sont ignorés s'ils sont également définis au niveau de l'environnement (et le paramètre pour InstanceTypeest automatiquement créé au niveau de l'environnement).

Si vous préférez conserver vos paramètres dans les fichiers de configuration, vous devez les supprimer de l'environnement, vous pouvez le faire InstanceTypeavec la commande suivante:

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

Consultez également les documents AWS pour d'autres façons de modifier les paramètres de niveau d'environnement.

Samuel Fekete
la source