Elastic Beanstalk CLI を使用して、Spring Boot アプリケーションを EB にデプロイします。HTTPS を構成しない限り、すべて正常に機能します。
userdocsによると、次の内容で .ebextensions フォルダーに .config ファイルを作成するだけです。
option_settings:
aws:elb:listener:443:
SSLCertificateId: <arn for cert>
ListenerProtocol: HTTPS
InstancePort: 5000
InstanceProtocol: HTTP
aws:elb:listener:80:
ListenerEnabled: false
ただし、その構成で環境を作成すると、ELB と通信できないためにヘルスチェックが失敗します。AWS コンソールで環境を見ると、HTTP と HTTPS の両方のリスナー ポートが無効になっており、SSL 証明書がロード バランサーに関連付けられていません。
動作の変化を考えると、構成が何らかの形で間違っていたとしても、.config ファイルが取得されて適用されていると言っても過言ではないと思います。
この段階で EB Web GUI を介して手動で HTTPS リスナーを有効にしようとすると、次のエラーが発生します。
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.
そのため、手動で有効にしたくても有効にすることさえできません。
ここには、カスタム nginx conf ファイルのアップロードに関する一連の質問/回答があります。それらは今では時代遅れであり、適用できないと思いますが、誰かがEBの現在の状態を考慮して機能するものを私に指摘できるなら、私はそれで喜んで行きます.
以下の参考情報
(自己署名) 証明書をホストするために ACM を使用しています。私の目的では、これをテストしている間、自己署名証明書は問題ありません。ドキュメントでは自己署名証明書の使用について言及されていますが、それがロードバランサーを混乱させているかどうかはわかりません。後で適切な証明書に移動します。
私の .elasticbeanstalk/config.yaml は次のようになります
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
環境を作成するために実行するコマンドラインは
eb create <name> -c <name> --elb-type classic
EB CLI バージョン情報
eb --version
EB CLI 3.10.5 (Python 2.7.1)