HTTPS リスナーを使用した Classic Load Balancer の作成
ロードバランサーは、クライアントからリクエストを受信し、ロードバランサーに登録されている EC2 インスタンスに分散します。
HTTP (80) ポートおよび HTTPS (443) ポートの両方でリッスンするロードバランサーを作成できます。HTTPS リスナーがポート 80 でインスタンスにリクエストを送信する方法を指定すると、ロードバランサーはリクエストを終了し、ロードバランサーからインスタンスへの通信は暗号化されません。HTTPS リスナーがポート 443 でインスタンスにリクエストを送信する場合は、ロードバランサーからインスタンスへの通信は暗号化されます。
ロードバランサーがインスタンスとの通信に暗号化された接続を使用する場合、オプションでインスタンスでの認証を有効にできます。これにより、パブリックキーとロードバランサーにこのために指定したキーが一致した場合に限り、ロードバランサーがインスタンスと通信できます。
既存のロードバランサーに HTTPS リスナーを追加する方法については、「Classic Load Balancer の HTTPS リスナーの設定」を参照してください。
前提条件
始める前に、以下の前提条件を満たしていることを確認してください。
-
「VPC および EC2 インスタンスの準備」の各ステップを実行します。
-
ロードバランサーに登録する EC2 インスタンスを起動します。これらのインスタンスのセキュリティグループは、ロードバランサーからのトラフィックを許可する必要があります。
-
EC2 インスタンスは、ヘルスチェックの対象に対して、HTTP ステータスコード 200 で応答する必要があります。詳細については、「Classic Load Balancer のヘルスチェックの設定」を参照してください。
-
EC2 インスタンスでキープアライブのオプションを有効にする場合は、キープアライブの設定値をロードバランサーのアイドルタイムアウトの設定値以上に設定をすることをお勧めします。ロードバランサーがインスタンスへの接続を確実に閉じるようにする場合は、キープアライブ時間のインスタンスに設定された値が、ロードバランサーのアイドルタイムアウトの設定値より大きいことを確認します。詳細については、「Classic Load Balancer のアイドル接続タイムアウトの設定」を参照してください。
-
セキュアリスナーを作成する場合、ロードバランサーに SSL サーバー証明書をデプロイする必要があります。インスタンスにリクエストを送信する前に、ロードバランサーは証明書を使用してリクエストを終了し、次にリクエストを復号します。SSL 証明書がない場合は作成します。詳細については、「クラシックロードバランサー の SSL/TLS 証明書」を参照してください。
コンソールを使用した HTTPS/SSL ロードバランサーの作成
HTTPS/SSL ロードバランサーを作成するには、次のタスクを実行します。
タスク
ステップ 1: ロードバランサーを定義する
最初に、名前、ネットワーク、1 つ以上のリスナーなど、ロードバランサーの基本的な設定情報を指定します。
リスナーとは接続リクエストをチェックするプロセスです。リスナーは、フロントエンド (クライアントからロードバランサー) 接続用のプロトコルとポート、およびバックエンド (ロードバランサーからインスタンス) 接続用のプロトコルとポートを使用して設定します。Elastic Load Balancing でサポートされるポート、プロトコル、およびリスナー設定については、「Classic Load Balancer のリスナー」を参照してください。
この例では、ロードバランサー用の 2 つのリスナーを設定します。最初のリスナーは、ポート 80 で HTTP リクエストを受け取り、HTTP を使用してポート 80 でインスタンスにそれらのリクエストを送信します。2 番目のリスナーは、ポート 443 で HTTPS リクエストを受け取り、HTTP を使用してポート 80 で (バックエンド認証を設定する場合は HTTPS を使用してポート 443 で) インスタンスにそれらのリクエストを送信します。
ロードバランサーを定義するには
-
https://console.aws.amazon.com/ec2/
で Amazon EC2 コンソールを開きます。 -
ナビゲーションペインの [LOAD BALANCING] で [ロードバランサー] を選択します。
-
[Create Load Balancer] を選択します。
-
[ロードバランサーの種類の選択] で、[Classic Load Balancer] を選択します。
-
[ロードバランサー名] に、ロードバランサーの名前を入力します。
Classic Load Balancer の名前は、リージョンの Classic Load Balancer セット内で一意にする必要があります。最大 32 文字で、英数字とハイフンのみ使用できます。先頭と末尾にハイフンを使用することはできません。
-
[Create LB inside (内側に LB を作成)] で、インスタンス用に選択したネットワークと同じネットワークを選択します (EC2-Classic または特定の VPC)。
-
[デフォルト VPC] デフォルト VPC を選択したときに、ロードバランサーのサブネットを選択する必要がある場合は、[Enable advanced VPC configuration (詳細な VPC 設定を有効にする)] を選択します。
-
[Listener Configuration] で、デフォルトのリスナーをそのままにしておき、[Add] を選択して別のリスナーを追加します。新しいリスナーの [Load Balancer Protocol] で、[HTTPS (Secure HTTP)] を選択します。これにより、[Load Balancer Port]、[Instance Protocol]、および [Instance Port] が更新されます。
デフォルトでは、[Instance Protocol] は HTTP、[Instance Port] は 80 です。
バックエンドインスタンス認証 (「ステップ 3: セキュリティ設定を構成する」で後述) を設定するには、インスタンスプロトコルを [HTTPS (セキュア HTTP)] に変更します。これにより、[Instance Port] も更新されます。
-
[EC2-VPC] [Available subnets] で、アドオンを使用して、少なくとも 1 つの利用可能なサブネットを選択します。サブネットが [Selected subnets] に移動します。ロードバランサーの可用性を高めるには、複数のアベイラビリティーゾーンからサブネットを選択します。
注記 EC2-Classic をネットワークとして選択した場合、またはデフォルト VPC を所有していて [Enable advanced VPC configuration] を選択しなかった場合は、サブネットを選択するユーザーインターフェイスは表示されません。
アベイラビリティーゾーンにつき、多くとも 1 つのサブネットしか追加できません。既に選択されたサブネットがあるアベイラビリティーゾーンから 2 番目のサブネットを選択する場合、現在そのアベイラビリティーゾーン用に選択されたサブネットがこのサブネットに置き換えられます。
-
[Next: Assign Security Groups] を選択します。
ステップ 2: VPC のロードバランサーにセキュリティグループを割り当てる
VPC をネットワークとして選択した場合は、ポートへのインバウンドトラフィックを許可するセキュリティグループをロードバランサーに割り当てる必要があります。このポートは、ロードバランサーとロードバランサーのヘルスチェック用に指定したポートです。
EC2-Classic をネットワークとして選択した場合は、次のステップに進むことができます。デフォルトでは、Elastic Load Balancing には EC2-Classic のロードバランサー用のセキュリティグループが用意されています。
ロードバランサーにセキュリティグループを割り当てるには
-
[Assign Security Groups] ページで [Create a new security group] を選択します。
-
セキュリティグループの名前と説明を入力するか、デフォルトの名前と説明をそのまま使用します。この新しいセキュリティグループには、ロードバランサーで使用するように設定したポートへのトラフィックを許可するルールが含まれます。
-
[Next: Configure Security Settings] を選択します。
ステップ 3: セキュリティ設定を構成する
フロントエンドリスナーに HTTPS または SSL を使用するとき、ロードバランサーに SSL 証明書をデプロイする必要があります。インスタンスにリクエストを送信する前に、ロードバランサーはこの証明書を使用して接続を終了し、クライアントからのリクエストを復号します。
また、セキュリティポリシーも指定する必要があります。Elastic Load Balancing で提供される SSL ネゴシエーション設定が事前定義されたセキュリティポリシーを使用するか、または独自のカスタムセキュリティポリシーを作成することもできます。
バックエンド接続に HTTPS/SSL を設定した場合は、インスタンスの認証を有効にできます。
セキュリティ設定を指定するには
-
[Select Certificate] で、次のいずれかを実行します。
-
AWS Certificate Manager を使用して証明書を作成またはインポートした場合は、[Choose an existing certificate from AWS Certificate Manager (ACM) (AWS Certificate Manager (ACM) から既存の証明書を選択)] を選択し、[証明書] から証明書を選択します。
-
IAM を使用して証明書をすでにインポートしている場合は、[Choose an existing certificate from AWS Identity and Access Management (IAM) (AWS Identity and Access Management (IAM) から既存の証明書を選択)] を選択し、[証明書] から証明書を選択します。
-
インポートする証明書があっても ACM がリージョンで使用可能でない場合は、[Upload a new SSL Certificate to AWS Identity and Access Management (IAM)] を選択します。証明書の名前を入力します。[Private Key] に、PEM エンコードされたプライベートキーファイルの内容をコピーして貼り付けます。[Public Key Certificate] に、PEM エンコードされたパブリックキー証明書ファイルの内容をコピーして貼り付けます。自己署名証明書を使用しておらず、ブラウザが暗黙的に証明書を受け入れることが重要である場合に限り、[Certificate Chain] に、PEM エンコードされた証明書チェーンファイルの内容をコピーして貼り付けます。
-
-
[暗号の選択] で、[事前定義されたセキュリティポリシー] が選択されており、[ELBSecurityPolicy-2016-08] に設定されていることを確認します。常に最新の事前定義されたセキュリティポリシーを使用することをお勧めします。別の事前定義されたセキュリティポリシーを使用する場合や、カスタムポリシーを作成する場合は、「SSL ネゴシエーション設定の更新」を参照してください。
-
(オプション) HTTPS リスナーを、暗号化された接続を使用してインスタンスと通信するように設定する場合は、オプションでインスタンスの認証を設定できます。
-
[Backend Certificate] で、[Enable backend authentication] を選択します。
注記 [バックエンド証明書] セクションが表示されない場合、[リスナーの設定] に戻って [インスタンスのプロトコル] で [HTTPS (セキュア HTTP)] を選択します。
-
[Certificate name] にパブリックキー証明書の名前を入力します。
-
[Certificate Body (pem encoded)] に証明書の内容をコピーして貼り付けます。パブリックキーがこのキーと一致した場合のみ、ロードバランサーはインスタンスと通信します。
-
他の証明書を追加するには、[Add another backend certificate] を選択します。
-
-
[Next: Configure Health Check] を選択します。
ステップ 4: ヘルスチェックを設定する
Elastic Load Balancing は、ロードバランサーに登録された EC2 インスタンスについて、ヘルスチェックを自動的に実行します。問題のあるインスタンスを検出した場合、Elastic Load Balancing はそのインスタンスへのトラフィックの送信を停止し、トラフィックのルートを正常なインスタンスに変更します。ヘルスチェックの設定の詳細については、「Classic Load Balancer のヘルスチェックの設定」を参照してください。
インスタンスのヘルスチェックを設定するには
-
[Configure Health Check] ページで、ping プロトコルと ping ポートを選択します。EC2 インスタンスでは、選択した ping ポートで指定のトラフィックを受け入れる必要があります。
-
[Ping Path] ボックスのデフォルト値を半角のスラッシュ (「/」) で置き換えます。これにより、Elastic Load Balancing は、ヘルスチェックリクエストをウェブサーバーのデフォルトのホームページ (
index.html
など) に送信できるようになります。 -
その他の設定はデフォルト値のままにしておきます。
-
[Next: Add EC2 Instances] を選択します。
ステップ 5: ロードバランサーに EC2 インスタンスを登録する
ロードバランサーは、ロードバランサーに登録されたインスタンスにトラフィックを分散します。同じリージョン内の 1 つまたは複数のアベイラビリティーゾーンにある EC2 インスタンスをロードバランサーとして選択できます。詳細については、「Classic Load Balancer の登録済みインスタンス」を参照してください。
アタッチされている Elastic Network Interface (ENI) にインスタンスを登録するとき、ロードバランサーは、インスタンスのプライマリインターフェイス (eth0) のプライマリ IP アドレスにトラフィックをルーティングします。
ロードバランサーへ EC2 インスタンスを登録するには
-
[Add EC2 Instances] ページで、ロードバランサーに登録するインスタンスを選択します。
-
クロスゾーン負荷分散およびConnection Drainingを有効のままにします。
-
[Next: Add Tags] を選択します。
ステップ 6: ロードバランサーにタグを付ける (オプション)
ロードバランサーにタグを設定することができます。また、次のステップに進むこともできます。
ロードバランサーにタグを追加するには
-
[Add Tags] ページで、タグのキーと値を指定します。
-
別のタグを追加するには、[Create Tag] を選択して、タグのキーと値を指定します。
-
タグの追加が終了したら、[Review and Create] を選択します。
ステップ 7: ロードバランサーを作成して検証する
ロードバランサーを作成する前に、選択した設定を確認します。ロードバランサーを作成した後で、EC2 インスタンスにトラフィックを送信するかどうかを検証できます。
ロードバランサーを作成してテストするには
-
[Review] ページで設定を確認します。設定を変更する必要がある場合は、編集する設定に対応するリンクを選択します。
-
[作成] を選択します。
-
ロードバランサーが作成されたことが通知されたら、[Close] を選択します。
-
新しいロードバランサーを選択します。
-
[Description] タブで [Status] 行を確認します。この行が一部のインスタンスが実行されていないことを示している場合、インスタンスはまだ登録中の可能性があります。詳細については、「Classic Load Balancer のトラブルシューティング: インスタンス登録」を参照してください。
-
(オプション) 少なくとも 1 つの EC2 インスタンスの状態が実行中であれば、ロードバランサーをテストできます。[DNS 名] の文字列 (例:
my-load-balancer-1234567890.us-west-2.elb.amazonaws.com
) をコピーし、インターネットに接続したウェブブラウザのアドレスフィールドに貼り付けます。ロードバランサーが実行中の場合は、 サーバーのデフォルトページが表示されます。
ステップ 8: ロードバランサーを削除する (オプション)
ロードバランサーが利用可能になると、ロードバランサーの実行時間に応じて 1 時間ごと、または 1 時間未満の時間について課金されます。不要になったロードバランサーは削除できます。ロードバランサーが削除されると、ロードバランサーの課金も停止されます。
ロードバランサーを削除するには
-
https://console.aws.amazon.com/ec2/
で Amazon EC2 コンソールを開きます。 -
ナビゲーションペインの [LOAD BALANCING] で [ロードバランサー] を選択します。
-
ロードバランサーを選択します。
-
[ Actions] で、[Delete ] を選択します。
-
確認を求めるメッセージが表示されたら、[Yes, Delete] を選択します。
-
(オプション) ロードバランサーを削除しても、そのロードバランサーに関連付けられた EC2 インスタンスは実行し続けます。また、それらのインスタンスの実行時間に応じて 1 時間ごと、または 1 時間未満の時間について課金されます。インスタンスの停止や終了の詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「インスタンスの停止と起動」または「インスタンスの削除」を参照してください。
AWS CLI を使用した HTTPS/SSL ロードバランサーの作成
AWS CLI を使用して HTTPS/SSL ロードバランサーを作成するには、次の手順を実行します。
タスク
ステップ 1: リスナーを設定する
リスナーとは接続リクエストをチェックするプロセスです。リスナーは、フロントエンド (クライアントからロードバランサー) 接続用のプロトコルとポート、およびバックエンド (ロードバランサーからインスタンス) 接続用のプロトコルとポートを使用して設定します。Elastic Load Balancing でサポートされるポート、プロトコル、およびリスナー設定については、「Classic Load Balancer のリスナー」を参照してください。
この例では、ポートおよびプロトコルをフロントエンド接続とバックエンド接続に使用するように指定することで、ロードバランサーに 2 つのリスナーを設定します。最初のリスナーは、ポート 80 で HTTP リクエストを受け取り、HTTP を使用してポート 80 でインスタンスにそれらのリクエストを送信します。2 つ目のリスナーは、ポート 443 で HTTPS リクエストを受け取り、HTTP を使用してポート 80 でインスタンスにリクエストを送信します。
2 番目のリスナーがフロントエンド接続に HTTPS を使用するため、SSL サーバー証明書をロードバランサーにデプロイする必要があります。インスタンスにリクエストを送信する前に、ロードバランサーは証明書を使用してリクエストを終了し、次にリクエストを復号します。
ロードバランサーのリスナーを設定するには
-
SSL 証明書の Amazon リソースネーム (ARN) を取得します。例:
ACM
arn:aws:acm:
region
:123456789012
:certificate/12345678-1234-1234-1234-123456789012
IAM
arn:aws:iam::
123456789012
:server-certificate/my-server-certificate
-
次の create-load-balancer をコマンドを使用して、ロードバランサーに 2 つのリスナーを構成します。
aws elb create-load-balancer --load-balancer-name
my-load-balancer
--listeners "Protocol=http,LoadBalancerPort=80,InstanceProtocol=http,InstancePort=80" "Protocol=https,LoadBalancerPort=443,InstanceProtocol=http,InstancePort=80,SSLCertificateId="ARN
" --availability-zonesus-west-2a
以下に、応答の例を示します。
{ "DNSName": "my-loadbalancer-012345678.us-west-2.elb.amazonaws.com" }
-
(オプション) 次の describe-load-balancers コマンドを使用して、ロードバランサーの詳細を表示できます。
aws elb describe-load-balancers --load-balancer-name
my-load-balancer
ステップ 2: SSL セキュリティポリシーを設定する
事前定義されたセキュリティポリシーのいずれかを選択するか、独自のカスタムセキュリティポリシーを作成できます。それ以外の場合、Elastic Load Balancing
は事前定義されたデフォルトのセキュリティポリシー、ELBSecurityPolicy-2016-08
を使用してロードバランサーを設定します。デフォルトのセキュリティポリシーを使用することをお勧めします。セキュリティポリシーの詳細については、「クラシックロードバランサー の SSL ネゴシエーション設定」を参照してください。
ロードバランサーにデフォルトのセキュリティポリシーが関連付けられていることを確認するには
次の describe-load-balancers コマンドを使用します。
aws elb describe-load-balancers --load-balancer-name
my-loadbalancer
以下に、応答の例を示します。ELBSecurityPolicy-2016-08
がポート 443 でロードバランサーに関連付けられることに注意してください。
{
"LoadBalancerDescriptions": [
{
...
"ListenerDescriptions": [
{
"Listener": {
"InstancePort": 80,
"SSLCertificateId": "ARN
",
"LoadBalancerPort": 443,
"Protocol": "HTTPS",
"InstanceProtocol": "HTTP"
},
"PolicyNames": [
"ELBSecurityPolicy-2016-08"
]
},
{
"Listener": {
"InstancePort": 80,
"LoadBalancerPort": 80,
"Protocol": "HTTP",
"InstanceProtocol": "HTTP"
},
"PolicyNames": []
}
],
...
}
]
}
必要に応じて、デフォルトのセキュリティポリシーを使用せずにロードバランサーの SSL セキュリティポリシーを設定できます。
(オプション) 事前定義された SSL セキュリティポリシーを使用するには
-
次の describe-load-balancer-policies コマンドを使用して、事前定義された SSL セキュリティポリシーの名前を一覧表示します。
aws elb describe-load-balancer-policies
事前定義されたセキュリティポリシーの設定については、「事前定義された SSL セキュリティポリシー」を参照してください。
-
次の create-load-balancer-policy コマンドを使用して、前のステップで一覧表示した、事前定義されたセキュリティポリシーのいずれかを利用する SSL ネゴシエーションのポリシーを作成します。
aws elb create-load-balancer-policy --load-balancer-name
my-loadbalancer
--policy-namemy-SSLNegotiation-policy
--policy-type-name SSLNegotiationPolicyType --policy-attributes AttributeName=Reference-Security-Policy,AttributeValue=predefined-policy
-
(オプション)次の describe-load-balancer-policies コマンドを使用して、ポリシーが作成されたことを確認します。
aws elb describe-load-balancer-policies --load-balancer-name
my-loadbalancer
--policy-namemy-SSLNegotiation-policy
応答には、ポリシーの説明が含まれます。
-
次の set-load-balancer-policies-of-listener コマンドを使用して、ポリシーをロードバランサーのポート 443 で有効にします。
aws elb set-load-balancer-policies-of-listener --load-balancer-name
my-loadbalancer
--load-balancer-port 443 --policy-namesmy-SSLNegotiation-policy
注記 set-load-balancer-policies-of-listener
コマンドは、指定されたロードバランサーのポートの現在のポリシーのセットを、指定されたポリシーのセットで上書きします。--policy-names
リストには、有効にするすべてのポリシーを含める必要があります。現在有効なポリシーを省略すると、そのポリシーは無効になります。 -
(オプション) 次の describe-load-balancers コマンドを使用して、ポリシーが有効になっていることを確認します。
aws elb describe-load-balancers --load-balancer-name
my-loadbalancer
ポリシーがポート 443 で有効になっていることを示す応答の例を、次に示します。
{ "LoadBalancerDescriptions": [ { .... "ListenerDescriptions": [ { "Listener": { "InstancePort": 80, "SSLCertificateId": "
ARN
", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTP" }, "PolicyNames": [ "my-SSLNegotiation-policy" ] }, { "Listener": { "InstancePort": 80, "LoadBalancerPort": 80, "Protocol": "HTTP", "InstanceProtocol": "HTTP" }, "PolicyNames": [] } ], ... } ] }
カスタムセキュリティポリシーを作成するとき、プロトコルと暗号を少なくとも 1 つずつ有効にする必要があります。DSA および RSA の暗号は署名アルゴリズムに固有であり、SSL
証明書を作成するために使用されます。すでに SSL 証明書がある場合は、証明書を作成するときに使用された暗号を有効にします。カスタムポリシーの名前は、ELBSecurityPolicy-
や ELBSample-
で始めないでください。これらの プレフィックスは、事前定義されたセキュリティポリシーの名前用に予約されているためです。
(オプション) カスタム SSL セキュリティポリシーを使用するには
-
create-load-balancer-policy コマンドを使用して、カスタムセキュリティポリシーを利用する SSL ネゴシエーションのポリシーを作成します。例:
aws elb create-load-balancer-policy --load-balancer-name
my-loadbalancer
--policy-namemy-SSLNegotiation-policy
--policy-type-name SSLNegotiationPolicyType --policy-attributes AttributeName=Protocol-TLSv1.2,AttributeValue=true AttributeName=Protocol-TLSv1.1,AttributeValue=true AttributeName=DHE-RSA-AES256-SHA256,AttributeValue=true AttributeName=Server-Defined-Cipher-Order,AttributeValue=true -
(オプション)次の describe-load-balancer-policies コマンドを使用して、ポリシーが作成されたことを確認します。
aws elb describe-load-balancer-policies --load-balancer-name
my-loadbalancer
--policy-namemy-SSLNegotiation-policy
応答には、ポリシーの説明が含まれます。
-
次の set-load-balancer-policies-of-listener コマンドを使用して、ポリシーをロードバランサーのポート 443 で有効にします。
aws elb set-load-balancer-policies-of-listener --load-balancer-name
my-loadbalancer
--load-balancer-port 443 --policy-namesmy-SSLNegotiation-policy
注記 set-load-balancer-policies-of-listener
コマンドは、指定されたロードバランサーのポートの現在のポリシーのセットを、指定されたポリシーのセットで上書きします。--policy-names
リストには、有効にするすべてのポリシーを含める必要があります。現在有効なポリシーを省略すると、そのポリシーは無効になります。 -
(オプション) 次の describe-load-balancers コマンドを使用して、ポリシーが有効になっていることを確認します。
aws elb describe-load-balancers --load-balancer-name
my-loadbalancer
ポリシーがポート 443 で有効になっていることを示す応答の例を、次に示します。
{ "LoadBalancerDescriptions": [ { .... "ListenerDescriptions": [ { "Listener": { "InstancePort": 80, "SSLCertificateId": "
ARN
", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTP" }, "PolicyNames": [ "my-SSLNegotiation-policy" ] }, { "Listener": { "InstancePort": 80, "LoadBalancerPort": 80, "Protocol": "HTTP", "InstanceProtocol": "HTTP" }, "PolicyNames": [] } ], ... } ] }
ステップ 3: バックエンドインスタンス認証を設定する (オプション)
バックエンド接続に HTTPS/SSL をセットアップした場合、オプションでインスタンスの認証を設定できます。
バックエンドインスタンス認証をセットアップする際、パブリックキーポリシーを作成します。次に、このパブリックキーポリシーを使用して、バックエンドインスタンス認証ポリシーを作成します。最後に、HTTPS プロトコルのインスタンスポートでバックエンドインスタンス認証ポリシーを設定します。
ロードバランサーは、インスタンスがロードバランサーに提示するパブリックキーがロードバランサーの認証ポリシーのパフリックキーと一致する場合のみ、インスタンスと通信します。
バックエンドインスタンス認証を設定するには
-
次のコマンドを使用してパブリックキーを取得します。
openssl x509 -in
your X509 certificate PublicKey
-pubkey -noout -
次の create-load-balancer-policy コマンドを使用して、パブリックキーポリシーを作成します。
aws elb create-load-balancer-policy --load-balancer-name
my-loadbalancer
--policy-namemy-PublicKey-policy
\ --policy-type-name PublicKeyPolicyType --policy-attributes AttributeName=PublicKey,AttributeValue=MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE=
注記 --policy-attributes
にパブリックキーの値を指定するには、パブリックキーの先頭の行と末尾の行 (「-----BEGIN PUBLIC KEY-----
」を含む行と「-----END PUBLIC KEY-----
」を含む行) を削除します。AWS CLI では、--policy-attributes
内に空白文字を使用できません。 -
次の create-load-balancer-policy コマンドを使用し、
my-PublicKey-policy
を仕様してバックエンドインスタンス認証ポリシーを作成します。aws elb create-load-balancer-policy --load-balancer-name
my-loadbalancer
--policy-namemy-authentication-policy
--policy-type-name BackendServerAuthenticationPolicyType --policy-attributes AttributeName=PublicKeyPolicyName,AttributeValue=my-PublicKey-policy
オプションで複数のパブリックキーポリシーを仕様できます。ロードバランサーはすべてのキーを 1 つずつ試して認証を行います。インスタンスが提示するパブリックキーがこれらのパブリックキーのいずれか 1 つに一致すれば、インスタンスは認証されます。
-
次の set-load-balancer-policies-for-backend-server コマンドを使用して、
my-authentication-policy
を HTTPS のインスタンスポートに設定します。この例では、インスタンスポートはポート 443 です。aws elb set-load-balancer-policies-for-backend-server --load-balancer-name
my-loadbalancer
--instance-port 443 --policy-namesmy-authentication-policy
-
(オプション) 次の describe-load-balancer-policies コマンドを使用して、ロードバランサーのすべてのポリシーを一覧表示します。
aws elb describe-load-balancer-policies --load-balancer-name
my-loadbalancer
-
(オプション)次の describe-load-balancer-policies コマンドを使用して、ポリシーの詳細を表示します。
aws elb describe-load-balancer-policies --load-balancer-name
my-loadbalancer
--policy-namesmy-authentication-policy
ステップ 4: ヘルスチェックを設定する (オプション)
Elastic Load Balancing は、指定したヘルスチェック設定に基づいて、登録されている各 EC2 インスタンスの状態を定期的にチェックします。問題のあるインスタンスを検出した場合、Elastic Load Balancing はそのインスタンスへのトラフィックの送信を停止し、正常なインスタンスにトラフィックをルーティングします。詳細については、「Classic Load Balancer のヘルスチェックの設定」を参照してください。
ロードバランサーを作成すると、Elastic Load Balancing はヘルスチェックに対してデフォルトの設定を使用します。デフォルト設定を使用する代わりに、必要に応じて、ロードバランサーのヘルスチェック設定を変更できます。
インスタンスのヘルスチェックを設定するには
次の configure-health-check コマンドを使用します。
aws elb configure-health-check --load-balancer-name
my-loadbalancer
--health-check Target=HTTP:80/ping,Interval=30,UnhealthyThreshold=2,HealthyThreshold=2,Timeout=3
以下に、応答の例を示します。
{
"HealthCheck": {
"HealthyThreshold": 2,
"Interval": 30,
"Target": "HTTP:80/ping",
"Timeout": 3,
"UnhealthyThreshold": 2
}
}
ステップ 5: EC2 インスタンスを登録する
ロードバランサーを作成したら、そのロードバランサーに EC2 インスタンスを登録する必要があります。同じリージョン内の 1 つまたは複数のアベイラビリティーゾーンにある EC2 インスタンスをロードバランサーとして選択できます。詳細については、「Classic Load Balancer の登録済みインスタンス」を参照してください。
register-instances-with-load-balancer コマンドを次のように使用します。
aws elb register-instances-with-load-balancer --load-balancer-name
my-loadbalancer
--instancesi-4f8cf126 i-0bb7ca62
以下に、応答の例を示します。
{
"Instances": [
{
"InstanceId": "i-4f8cf126"
},
{
"InstanceId": "i-0bb7ca62"
}
]
}
ステップ 6: インスタンスを検証する
登録したインスタンスのいずれかが InService
状態になると、ロードバランサーを使用できるようになります。
新しく登録した EC2 インスタンスの状態を確認するには、次の describe-instance-health コマンドを使用します。
aws elb describe-instance-health --load-balancer-name
my-loadbalancer
--instancesi-4f8cf126 i-0bb7ca62
以下に、応答の例を示します。
{
"InstanceStates": [
{
"InstanceId": "i-4f8cf126",
"ReasonCode": "N/A",
"State": "InService",
"Description": "N/A"
},
{
"InstanceId": "i-0bb7ca62",
"ReasonCode": "Instance",
"State": "OutOfService",
"Description": "Instance registration is still in progress"
}
]
}
インスタンスの State
フィールドが OutOfService
である場合は、インスタンスがまだ登録中の可能性があります。詳細については、「Classic Load Balancer のトラブルシューティング: インスタンス登録」を参照してください。
少なくとも 1 つのインスタンスの状態が InService
であれば、ロードバランサーをテストできます。ロードバランサーをテストするには、ロードバランサーの DNS 名をコピーして、インターネットに接続されているウェブブラウザのアドレスフィールドに貼り付けます。ロードバランサーが実行中の場合は、HTTP
サーバーのデフォルトページが表示されます。
ステップ 7: ロードバランサーを削除する (オプション)
ロードバランサーを削除すると、関連する EC2 インスタンスが自動的に登録解除されます。ロードバランサーが削除されると、ロードバランサーの課金も停止されます。ただし、EC2 インスタンスは引き続き実行され、利用料金も継続して発生します。
ロードバランサーを削除するには、次の delete-load-balancer コマンドを使用します。
aws elb delete-load-balancer --load-balancer-name
my-loadbalancer
EC2 インスタンスを停止するには、stop-instances コマンドを使用します。EC2 インスタンスを削除するには、terminate-instances コマンドを使用します。