AWS Elastic Beanstalk
開発者ガイド

HTTPS を復号するよう Elastic Beanstalk 環境のロードバランサーを設定する

AWS Elastic Beanstalk 環境を更新して HTTPS を使用するには、環境内でロードバランサー用の HTTPS リスナーを設定する必要があります。ロードバランサーの 2 つのタイプで HTTPS リスナーがサポートされています (Classic Load Balancer と Application Load Balancer)。

Elastic Beanstalk コンソールまたは設定ファイルのいずれかを使用して、セキュアリスナーを設定し、証明書を割り当てることができます。

注記

単一インスタンス環境にはロードバランサーが存在せず、ロードバランサーでは HTTPS 接尾辞はサポートされません。

Elastic Beanstalk コンソールを使用したセキュアリスナーの設定

お客様の環境のロードバランサーに証明書を割り当てるには

  1. Elastic Beanstalk コンソール を開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Configuration] を選択します。

  4. [ロードバランサー] 設定カードで、[変更] を選択します。

    注記

    [ロードバランサー] 設定カードに [変更] ボタンがない場合、お客様の環境には [ロードバランサー] がありません。

  5. [ロードバランサーの変更] ページの手順は、環境に関連付けられるロードバランサーのタイプによって異なります。

    Classic Load Balancer

    1. [リスナーの追加] を選択します。

    2. [Classic Load Balancer listener (クラシックロードバランサーリスナー)] ダイアログボックスで次の設定を構成します。

      • [リスナーポート] で着信トラフィックポートを入力します (通常の場合は、443)。

      • [リスナープロトコル] で [HTTPS] を選択します。

      • [インスタンスポート] で 80 と入力します。

      • [インスタンスのプロトコル] で [HTTP] を選択します。

      • [SSL 証明書] で、証明書を選択します。

    3. [追加] を選択します。

    Application Load Balancer

    1. [リスナーの追加] を選択します。

    2. [Application Load Balancer リスナー (アプリケーションロードバランサーリスナー)] ダイアログボックスで次の設定を構成します。

      • [ポート] で着信トラフィックポートを入力します (通常の場合は、443)。

      • [プロトコル] で [HTTPS] を選択します。

      • [SSL 証明書] で、証明書を選択します。

    3. [追加] を選択します。

    注記

    ドロップダウンメニューに証明書が表示されない場合は、AWS Certificate Manager (ACM)カスタムドメイン名の証明書を作成またはアップロードするか (推奨)、AWS CLI を使用して証明書を IAM にアップロードします。

  6. [Apply] を選択します。

設定ファイルを使用したセキュアリスナーの設定

次のいすれかの 設定ファイルを使用して、ロードバランサーに対してセキュアなリスナーを設定できます。

例 .ebextensions/securelistener-clb.config

環境に Classic Load Balancer がある場合、この例を使用します。この例では、 指定した証明書を使用して ポート 443 の HTTPS リスナーを設定し、復号化されたトラフィックがポート 80 上でお客様の環境内のインスタンスに転送されるように、aws:elb:listener 名前空間のオプションを使用します。

option_settings: aws:elb:listener:443: SSLCertificateId: arn:aws:acm:us-east-2:1234567890123:certificate/#################################### ListenerProtocol: HTTPS InstancePort: 80

強調表示されたテキストを証明書の ARN に置き換えます。証明書としては、AWS Certificate Manager (ACM) で作成またはアップロードしたものか (推奨)、AWS CLI を使用して IAM にアップロードしたものを指定できます。

Classic Load Balancer の設定オプションの詳細については、「Classic Load Balancer 設定の名前空間」を参照してください。

例 .ebextensions/securelistener-alb.config

環境に Application Load Balancer がある場合、この例を使用します。この例では、aws:elbv2:listener 名前空間内のオプションを使用して、指定した証明書によりポート 443 上の HTTPS リスナーを設定しています。リスナーは、デフォルトのプロセスにトラフィックをルーティングします。

option_settings: aws:elbv2:listener:443: Protocol: HTTPS SSLCertificateArns: arn:aws:acm:us-east-2:1234567890123:certificate/####################################

セキュリティグループを設定する

ポート 80 以外のインスタンスポートにトラフィックを転送するようにロードバランサーを設定する場合は、ロードバランサーからのインスタンスポート上のインバウンドトラフィックを許可するルールをセキュリティグループに追加する必要があります。カスタム VPC 内で環境を作成する場合は、Elastic Beanstalk によってこのルールが自動的に追加されます。

このルールは、Resources キーを、アプリケーションの .ebextensions ディレクトリにある設定ファイルに追加することで追加できます。

以下の例の設定ファイルでは、ロードバランサーのセキュリティグループからのポート 1000 上のトラフィックを許可する進入ルールを AWSEBSecurityGroup セキュリティグループに追加しています。

例 .ebextensions/sg-ingressfromlb.config

Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 1000 FromPort: 1000 SourceSecurityGroupName: {"Fn::GetAtt" : ["AWSEBLoadBalancer" , "SourceSecurityGroup.GroupName"]}