2017-07-02 1 views
1

Je déploie une application en utilisant le Elastic Beanstalk Go Platform.AWS Elastic Beanstalk option_settings variable d'environnement avec l'instance ip

Je dois définir une variable d'environnement pour l'adresse IP privée de l'instance. (je besoin de cette variable d'environnement disponible à mon application elle-même, une fois qu'il est exécuté par Procfile.)

Dans mon dossier .ebextensions/options.config j'ai tout essayé, mais pas de chance encore:

{ 
    "option_settings": [ 
    { 
     "namespace": "aws:elasticbeanstalk:application:environment", 
     "option_name": "PRIVATE_IP", 
     "value": { 
     "Fn::GetAtt": [ 
      "Ec2Instance", 
      "PrivateIp" 
     ] 
     } 
    } 
    ] 
} 

Cet exemple PRIVATE_IP pour littéralement l'ensemble de la chaîne JSON Fn::GetAtt.... Les fonctions ne sont-elles pas interprétées dans option_settings? Y a-t-il un autre moyen d'y parvenir?

Répondre

1

Je ne sais pas exactement comment implémenter cette solution dans .ebextensions, mais AWS a une URL spéciale, http://169.254.169.254/latest/meta-data/, que vous pouvez utiliser pour demander cette information. Vérifiez pour plus d'infos here. Pour l'adresse IP, vous pouvez utiliser http://169.254.169.254/latest/meta-data/public-ipv4. Cette URL vérifie l'origine http et répond avec les informations de votre instance.

Je pense que vous pouvez configurer votre YAML pour faire une demande de boucle et obtenir les données. Mais peut-être n'avez-vous pas besoin de sauvegarder ces informations au moment du déploiement car l'URL est disponible pour votre instance lors de l'exécution. Vous pouvez faire cette demande directement dans votre code.

+0

L'adresse IP privée est également disponible. Pour cela, vous utilisez local-ipv4 comme nom de ressource. –

+0

Gustavo, merci. Je suis conscient de ce point de terminaison, mais curl n'a pas été réellement exécuté en yaml. Pour certaines raisons spécifiques, j'ai besoin de l'ip disponible dans une variable d'environnement avant la première exécution de l'application. – seanomlor

+0

Cette information de ressource n'est pas disponible dans ebextensions dans Beanstalk, seulement Cloudformation. Pour créer une variable d'environnement avec l'adresse IP, vous devez l'obtenir à partir des métadonnées, puis émettre une commande container_command pour la mettre à jour à l'aide de la commande aws cli installée localement. –