2017-08-16 5 views
0

J'utilise l'interface de ligne de commande Elastic Beanstalk pour déployer mon application Spring Boot sur EB. Tout fonctionne correctement tant que je ne configure pas HTTPS.Comment configurer l'équilibreur de charge classique Elastic beanstalk pour terminer HTTPS à l'aide de la CLI

Selon le userdocs tout ce que je devrais avoir besoin de faire est de créer un fichier .config dans mon .ebextensions dossier avec le contenu suivant

option_settings: 
    aws:elb:listener:443: 
     SSLCertificateId: <arn for cert> 
     ListenerProtocol: HTTPS 
     InstancePort: 5000 
     InstanceProtocol: HTTP 
    aws:elb:listener:80: 
     ListenerEnabled: false 

Cependant, si je crée mon environnement avec cette configuration, les contrôles de santé ne en raison d'être incapable de communiquer avec l'ELB. En examinant l'environnement dans la console AWS, les ports d'écoute HTTP et HTTPS ont été désactivés et le certificat SSL n'est pas associé à l'équilibreur de charge. Étant donné le changement de comportement, je pense qu'il est sûr de dire que le fichier .config est détecté et appliqué, même si la configuration est incorrecte.

Si j'essaie manuellement d'activer l'écouteur HTTPS via l'interface graphique Web EB à ce stade, j'obtiens l'erreur suivante.

LoadBalancerHTTPSPort: You have specified both the @deprecated(:default.aws:elb:loadbalancer:LoadBalancerHTTPSPort) option as well as one in the new aws:elb:listener:443 namespace. The :default.aws:elb:loadbalancer:LoadBalancerHTTPSPort option will be ignored. 

Donc je ne peux même pas l'activer manuellement même si je le voulais.

Vous trouverez ici un binch de questions/réponses sur le téléchargement de fichiers de configuration nginx personnalisés. Je crois que ceux-ci sont maintenant périmés et non applicables, mais si quelqu'un peut me diriger vers quelque chose qui fonctionne compte tenu de l'état actuel de EB, je suis heureux d'y aller.

Quelques informations de référence ci-dessous

J'utilise ACM pour héberger mon (auto-signé) cert. Pour mes besoins, les certificats auto-signés sont acceptables pendant que je teste cela. Je ne sais pas si cela perturbe l'équilibreur de charge, bien que les docs mentionnent l'utilisation de certificats auto-signés. Je passerai à un cert approprié plus tard.

Mon .elasticbeanstalk/config.yaml ressemble à ceci

branch-defaults: 
    default: 
    environment: <name> 
deploy: 
    artifact: target/<jar name>.jar 
global: 
    application_name: <App name> 
    branch: null 
    default_ec2_keyname: <key name> 
    default_platform: Java 8 
    default_region: eu-west-1 
    include_git_submodules: true 
    instance_profile: null 
    platform_name: null 
    platform_version: null 
    profile: eb-cli 
    repository: null 
    sc: null 
    workspace_type: Application 

Le commandline je lance pour créer l'environnement est

eb create <name> -c <name> --elb-type classic 

Version EB CLI information

eb --version 
EB CLI 3.10.5 (Python 2.7.1) 

Répondre

0

Deux possible solutions:

1.)

Avez-vous téléchargé votre certificat de serveur à ACM? Il n'est pas clair si vous avez créé avec ACM ou un tiers qui aurait besoin de télécharger vers ACM. http://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html

2.)

Vérifiez l'ordre de priorité pour les configs dans Elastic Beanstalk. Les .ebextensions ont une priorité faible, de sorte que ces valeurs d'option peuvent être remplacées par des paramètres d'option de priorité supérieure.

La solution consisterait à mettre à jour votre certificat dans l'interface graphique de la console.Accédez à l'interface graphique https://aws.amazon.com/ Accédez à votre gui elastic beanstalk -> cliquez sur votre environnement -> cliquez sur la configuration dans la barre de gauche -> cliquez sur l'icône représentant une roue dentée à côté de "load balancing".

Maintenant, vous verrez une liste des paramètres d'option ELB. Choisissez votre certificat dans le menu déroulant: "Identifiant du certificat SSL" et enregistrez.

+0

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html#configuration-options-precedence –

+0

Ceci ne fournit pas de réponse à la question. Une fois que vous avez suffisamment [réputation] (https://stackoverflow.com/help/whats-reputation) vous pourrez [commenter n'importe quel article] (https://stackoverflow.com/help/privileges/comment); Au lieu de cela, [fournissez des réponses qui ne nécessitent pas de précisions de la part du demandeur] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- je-fais-à la place). - [De l'examen] (/ review/low-quality-posts/17147557) –