Puertos AWS Beanstalk y Docker = ¿qué class de tonterías es esta?

Así que tengo una aplicación acoplable que se ejecuta en el puerto 9000, y me gustaría que esto se acceda solo a través de https en lugar de http, sin embargo, no parece tener ningún sentido de cómo Amazon maneja los puertos. En resumen, me gustaría exponer solo el puerto 443 y no el 80 (en la capa del equilibrador de carga y la capa de instancia), pero no he podido hacer esto.

Entonces mi Dockerfile tiene:

EXPOSE 9000 

y mi Dockerrun.aws.json tiene:

 { "AWSEBDockerrunVersion": "1", "Ports": [{ "ContainerPort": "9000" }] } 

y parece que no puedo acceder a las cosas a través del puerto 9000, sino solo por 80.

Cuando entro en la instancia que está ejecutando el contenedor acoplable y busco los puertos con netstat, obtengo los puertos 80 y 22 y algunos otros puertos udp, pero no el puerto 9000. ¿Cómo diablos logra esto Amazon? Más importante aún, ¿cómo obtiene un usuario el comportamiento esperado?

Intentar esto con ssl y https también produce lo mismo. Los certificates se configuran y asignan al puerto 443, incluso he creado un caso en el file de configuration .ebextensions para abrir el puerto 443 en la instancia y todavía no hay ssl

  sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupName: {Ref : AWSEBSecurityGroup} IpProtocol: tcp ToPort: 443 FromPort: 443 CidrIp: 0.0.0.0/0 

La única forma en que puedo hacer que SSL funcione es hacer que Load Balancer use el puerto 443 (ssl) reenviando al puerto de instancia 80 (no https), pero esto es ridículo. ¿Cómo diablos puedo abrir el puerto ssl en la instancia y establecer la window acoplable para usar el puerto dado? ¿Alguien ha hecho esto con éxito?

Agradecería cualquier ayuda en esto. He revisado los documentos y he llegado tan lejos con esto, pero esto simplemente me desconcierta. En resumen, me gustaría exponer solo el puerto 443 y no el 80 (en la capa del equilibrador de carga y la capa de instancia), pero no he podido hacer esto.

Que tengas un gran día

Aclamaciones

Es un problema conocido, de http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html :

Puede especificar varios puertos de contenedor, pero Elastic Beanstalk usa solo el primero para conectar su contenedor al proxy inverso del host y las requestes de ruta desde Internet público.

Por lo tanto, si necesita varios puertos, es probable que AWS Elastic Beanstalk no sea la mejor opción. Al less la opción Docker.

Con respecto a SSL, lo resolvimos mediante el uso de una instancia dedicada de nginx y proxy_pass'ing a la URL del entorno de Elastic Beanstalk.