0

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)
4

1 に答える 1