AWS CLI を使用した Application Load Balancer の開始方法 - Elastic Load Balancing

AWS CLI を使用した Application Load Balancer の開始方法

このチュートリアルでは、AWS CLI を通じて Application Load Balancer の実践的な概要を説明します。

開始する前に

  • 次のコマンドを使用して、Application Load Balancer をサポートするバージョンの AWS CLI を実行していることを確認します。

    aws elbv2 help

    elbv2 が有効な選択肢ではないことを示すエラーメッセージが発生した場合は、AWS CLI を更新します。詳細については、AWS Command Line Interface ユーザーガイドの「AWS Command Line Interface のインストール」を参照してください。

  • Virtual Private Cloud (VPC) で EC2 インスタンスを起動します。これらのインスタンスのセキュリティグループがリスナーポートとヘルスチェックポートでアクセスを許可することを確認します。詳細については、「ターゲットセキュリティグループ」を参照してください。

  • IPv4 ロードバランサーとデュアルスタックロードバランサーのどちらを作成するかを決定します。クライアントが IPv4 アドレスだけを使用してロードバランサーと通信する場合、IPv4 を使用します。クライアントが IPv4 および IPv6 アドレスを使用してロードバランサーと通信する場合、デュアルスタックを使用します。また、IPv6 を使用して IPv6 アプリケーションやデュアルスタックサブネットなどのバックエンドターゲットと通信するために、デュアルスタックを使用することもできます。

  • 必ず、Apache や Internet Information Services (IIS) などのウェブサーバーを各 EC2 インスタンスにインストールします。これらのインスタンスのセキュリティグループでは、ポート 80 の HTTP アクセスを許可していることを確認してください。

ロードバランサーを作成する

最初のロードバランサーを作成するには、次のステップを完了します。

ロードバランサーを作成するには
  1. ロードバランサーを作成するには、create-load-balancer コマンドを使用します。同じアベイラビリティーゾーンにない 2 つのサブネットを指定する必要があります。

    aws elbv2 create-load-balancer --name my-load-balancer \ --subnets subnet-0e3f5cac72EXAMPLE subnet-081ec835f3EXAMPLE --security-groups sg-07e8ffd50fEXAMPLE

    dualstack ロードバランサーを作成するには、create-load-balancer コマンドを使用します。

    aws elbv2 create-load-balancer --name my-load-balancer \ --subnets subnet-0e3f5cac72EXAMPLE subnet-081ec835f3EXAMPLE --security-groups sg-07e8ffd50fEXAMPLE --ip-address-type dualstack

    出力には、次の形式でロードバランサーの Amazon リソースネーム (ARN) が含まれます。

    arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/my-load-balancer/1234567890123456
  2. create-target-group コマンドを使用して、EC2 インスタンスに使用したのと同じ VPC を指定してターゲットグループを作成します。

    IPv4 および IPv6 ターゲットグループを作成して、デュアルスタックロードバランサーに関連付けることができます。ターゲットグループの IP アドレスタイプによって、ロードバランサーがバックエンドターゲットと通信したり、バックエンドターゲットの状態をチェックしたりするのに使用する IP バージョンが決定されます。

    aws elbv2 create-target-group --name my-targets --protocol HTTP --port 80 \ --vpc-id vpc-0598c7d356EXAMPLE --ip-address-type [ipv4 or ipv6]

    出力には、次の形式のターゲットグループの ARN が含まれます。

    arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/1234567890123456
  3. インスタンスをターゲットグループに登録するには、register-targets コマンドを使用します。

    aws elbv2 register-targets --target-group-arn targetgroup-arn \ --targets Id=i-0abcdef1234567890 Id=i-1234567890abcdef0
  4. ターゲットグループにリクエストを転送するデフォルトルールを持つロードバランサーのリスナーを作成するには、create-listener コマンドを使用します。

    aws elbv2 create-listener --load-balancer-arn loadbalancer-arn \ --protocol HTTP --port 80 \ --default-actions Type=forward,TargetGroupArn=targetgroup-arn

    出力には、次の形式のリスナーの ARN が含まれます。

    arn:aws:elasticloadbalancing:us-east-2:123456789012:listener/app/my-load-balancer/1234567890123456/1234567890123456
  5. (オプション) この describe-target-health コマンドを使用してターゲットグループの登録されたターゲットのヘルスステータスを確認できます。

    aws elbv2 describe-target-health --target-group-arn targetgroup-arn

HTTPS リスナーの追加

HTTP リスナーを持つロードバランサーがある場合、次のように HTTPS リスナーを追加できます。

ロードバランサーに HTTPS リスナーを追加するには
  1. 次のいずれかの方法を使用して、ロードバランサーで使用する SSL 証明書を作成します。

    • AWS Certificate Manager(ACM) を使用して証明書を作成またはインポートします。詳細については、AWS Certificate Manager ユーザーガイド証明書のリクエスト または 証明書のインポート を参照してください。

    • AWS Identity and Access Management(IAM) を使用して証明書をアップロードします。 詳細については、IAM ユーザーガイドWorking with server certificates を参照してください。

  2. ターゲットグループにリクエストを転送するデフォルトルールを持つリスナーを作成するには、create-listener コマンドを使用します。HTTPS リスナーを作成するときは、SSL 証明書を指定する必要があります。--ssl-policy オプションを使用してデフォルト以外の SSL ポリシーを指定できます。

    aws elbv2 create-listener --load-balancer-arn loadbalancer-arn \ --protocol HTTPS --port 443 \ --certificates CertificateArn=certificate-arn \ --default-actions Type=forward,TargetGroupArn=targetgroup-arn

パスベースのルーティングの追加

1 つのターゲットグループにリクエストを転送するデフォルトルールを持つリスナーがある場合、URL に基づいて別のターゲットグループにリクエストを転送するルールを追加できます。たとえば、1 つのターゲットグループに全般的なリクエストをルーティングし、イメージを表示するリクエストを別のターゲットグループにルーティングできます。

パスパターンを持つリスナーにルールを追加するには
  1. ターゲットグループを作成するには、create-target-group コマンドを使用します。

    aws elbv2 create-target-group --name my-targets --protocol HTTP --port 80 \ --vpc-id vpc-0598c7d356EXAMPLE
  2. インスタンスをターゲットグループに登録するには、register-targets コマンドを使用します。

    aws elbv2 register-targets --target-group-arn targetgroup-arn \ --targets Id=i-0abcdef1234567890 Id=i-1234567890abcdef0
  3. URL に指定されたパターンが含まれている場合に、ターゲットグループにリクエストを転送するルールをリスナーに追加するには、create-rule コマンドを使用します。

    aws elbv2 create-rule --listener-arn listener-arn --priority 10 \ --conditions Field=path-pattern,Values='/img/*' \ --actions Type=forward,TargetGroupArn=targetgroup-arn

ロードバランサーの削除

ロードバランサーとターゲットグループが必要なくなった場合は、次のように削除することができます。

aws elbv2 delete-load-balancer --load-balancer-arn loadbalancer-arn aws elbv2 delete-target-group --target-group-arn targetgroup-arn