メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS::ElasticLoadBalancing::LoadBalancer

AWS::ElasticLoadBalancing::LoadBalancer タイプは、LoadBalancer を作成します。

注記

このリソースにパブリック IP アドレスが割り当てられており、同じテンプレートに定義されている VPC が関連付けられている場合は、DependsOn 属性を使用して VPC ゲートウェイのアタッチメントへの依存関係を宣言する必要があります。詳細については、「DependsOn 属性」を参照してください。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

Copy
{ "Type": "AWS::ElasticLoadBalancing::LoadBalancer", "Properties": { "AccessLoggingPolicy" : AccessLoggingPolicy, "AppCookieStickinessPolicy" : [ AppCookieStickinessPolicy, ... ], "AvailabilityZones" : [ String, ... ], "ConnectionDrainingPolicy" : ConnectionDrainingPolicy, "ConnectionSettings" : ConnectionSettings, "CrossZone" : Boolean, "HealthCheck" : HealthCheck, "Instances" : [ String, ... ], "LBCookieStickinessPolicy" : [ LBCookieStickinessPolicy, ... ], "LoadBalancerName" : String, "Listeners" : [ Listener, ... ], "Policies" : [ ElasticLoadBalancing Policy, ... ], "Scheme" : String, "SecurityGroups" : [ Security Group, ... ], "Subnets" : [ String, ... ], "Tags" : [ Resource Tag, ... ] } }

YAML

Copy
Type: "AWS::ElasticLoadBalancing::LoadBalancer" Properties: AccessLoggingPolicy: AccessLoggingPolicy AppCookieStickinessPolicy: - AppCookieStickinessPolicy AvailabilityZones: - 文字列 ConnectionDrainingPolicy: ConnectionDrainingPolicy ConnectionSettings: ConnectionSettings CrossZone: Boolean HealthCheck: HealthCheck Instances: - 文字列 LBCookieStickinessPolicy: - LBCookieStickinessPolicy LoadBalancerName: String Listeners: - Listener Policies: - ElasticLoadBalancing Policy Scheme: String, SecurityGroups: - Security Group Subnets: - 文字列 Tags: - Resource Tag

プロパティ

AccessLoggingPolicy

ロードバランサーに対するすべてのリクエストの詳細な情報 (たとえば、リクエストが受信された時刻、クライアントの IP アドレス、レイテンシー、リクエストパス、サーバー応答) をキャプチャします。

Required: No

Type: Elastic Load Balancing AccessLoggingPolicy

更新に伴う要件: 中断はありません。

AppCookieStickinessPolicy

アプリケーションによって生成された Cookie に従うスティッキーセッション存続期間を持つ 1 つまたは複数の維持ポリシーを生成します。これらのポリシーは、HTTP/HTTPS リスナーにのみ関連付けることができます。

Required: No

Type: AppCookieStickinessPolicy オブジェクトのリスト。

更新に伴う要件: 中断はありません。

AvailabilityZones

ロードバランサーを作成するアベイラビリティーゾーン。AvailabilityZones プロパティまたは Subnets プロパティを指定できますが、両方指定することはできません。

注記

ロードバランサーが VPC 内にある場合、Subnets プロパティを指定します。

Required: No

Type: List of String values

アベイラビリティーゾーンが指定されていないにもかかわらずアベイラビリティーゾーンを追加しようとしている場合、またはすべてのアベイラビリティーゾーンを削除しようとしている場合は更新に伴う要件: 置換。それ以外の場合、更新に伴う中断はありません

ConnectionDrainingPolicy

登録解除されたインスタンスまたは異常なインスタンスがすべての処理中のリクエストを完了できるかどうか。

Required: No

Type: Elastic Load Balancing ConnectionDrainingPolicy

更新に伴う要件: 中断はありません。

ConnectionSettings

ロードバランサーのフロントエンド接続とバックエンド接続が、アイドル状態を維持できる期間を指定します。

Required: No

Type: Elastic Load Balancing ConnectionSettings

更新に伴う要件: 中断はありません。

CrossZone

ロードバランサーでクロスゾーン負荷分散が有効かどうか。クロスゾーン負荷分散を使用すると、ロードバランサーノードはすべてのアベイラビリティーゾーン間でバックエンドインスタンスへのトラフィックをルーティングします。デフォルトでは、CrossZone プロパティは false です。

Required: No

タイプ: ブール値

更新に伴う要件: 中断はありません。

HealthCheck

インスタンスのアプリケーションのヘルスチェック。

Required: No

: ElasticLoadBalancing LoadBalancer HealthCheck

ヘルスチェックが指定されていないにもかかわらずヘルスチェックを追加しようとしている場合、またはヘルスチェックを削除しようとしている場合は更新に伴う要件: 置換。それ以外の場合、更新に伴う中断はありません

Instances

ロードバランサーの EC2 インスタンス ID のリスト。

Required: No

Type: List of String values

更新に伴う要件: 中断はありません。

LBCookieStickinessPolicy

ブラウザ (user-agent) の存続期間または指定された有効期間によって制御されるスティッキーセッション存続期間を持つ維持ポリシーを生成します。このポリシーは、HTTP/HTTPS リスナーにのみ関連付けることができます。

Required: No

Type: LBCookieStickinessPolicy オブジェクトのリスト。

更新に伴う要件: 中断はありません。

LoadBalancerName

ロードバランサーの名前。有効な値については、Elastic Load Balancing API リファレンスバージョン 2012-06-01CreateLoadBalancer アクションの LoadBalancerName パラメーターを参照してください。

名前を指定しない場合、AWS CloudFormation は一意の物理 ID を生成し、その ID をロードバランサー名として使用します。名前は、ロードバランサーのセット内で一意である必要があります。詳細については、「Name タイプ」を参照してください。

重要

名前を指定すると、このリソースの置換が必要な更新はできません。中断が不要であるか、一定の中断が必要な更新であれば、行うことができます。リソースを置き換える必要がある場合は、新しい名前を指定します。

必須: いいえ

タイプ: 文字列

更新に伴う要件: 置換

Listeners

このロードバランサーの 1 つ以上のリスナー。各リスナーは特定のポートに登録されている必要があります。1 つのポートに複数のリスナーを登録することはできません。

重要

Listeners プロパティによって指定されたリスナーのプロパティ値を更新した場合、AWS CloudFormation は既存のリスナーを削除し、更新されたプロパティを使用して新しいリスナーを作成します。AWS CloudFormation がこのアクションを実行している間、クライアントはロードバランサーに接続できません。

Required: Yes

Type: ElasticLoadBalancing Listener プロパティタイプ オブジェクトのリスト。

更新に伴う要件: 中断はありません。

Policies

この Elastic Load Balancing に適用する Elastic Load Balancing ポリシーのリスト。バックエンドサーバーポリシーのみを指定します。詳細については、Elastic Load Balancing API リファレンスバージョン 2012-06-01DescribeLoadBalancerPolicyTypes を参照してください。

Required: No

Type: ElasticLoadBalancing ポリシーオブジェクトのリスト。

更新に伴う要件: 中断はありません。

Scheme

Amazon VPC にアタッチされているロードバランサーに対して、このパラメーターを使用して、使用するロードバランサーのタイプを指定できます。プライベート IP アドレスに解決される DNS 名を持つ内部ロードバランサーを作成するには、internal を指定し、パブリック IP アドレスに解決されるパブリックに解決可能な DNS 名を持つロードバランサーを作成するには、internet-facing を指定します。

注記

internal を指定した場合、アベイラビリティーゾーンではなく、ロードバランサーに関連付けるサブネットを指定する必要があります。

Required: No

Type: String

更新に伴う要件: 置換

SecurityGroups

Required: No

Type: Virtual Private Cloud (VPC) 内のロードバランサーに割り当てられるセキュリティグループのリスト。

更新に伴う要件: 中断はありません。

Subnets

ロードバランサーにアタッチする Virtual Private Cloud (VPC) 内のサブネット ID のリスト。同じアベイラビリティーゾーンにある複数のサブネットを指定しないでください。AvailabilityZones プロパティまたは Subnets プロパティを指定できますが、両方指定することはできません。

VPC で Elastic Load Balancing を使用する方法については、Elastic Load Balancing 開発者ガイドの「Amazon VPC で Elastic Load Balancing を使用する方法」を参照してください。

Required: No

Type: List of String values

サブネットが指定されていないにもかかわらずサブネットを追加しようとしている場合、またはすべてのサブネットを削除しようとしている場合は更新に伴う要件: 置換。それ以外の場合、更新に伴う中断はありません。ロードバランサーを更新して同じアベイラビリティーゾーンにある別のサブネットに変更するには、2 段階の更新を実行する必要があります。まず、別のアベイラビリティーゾーンにあるサブネットが使用されるようにロードバランサーを更新する必要があります。この更新が完了したら、元のアベイラビリティーゾーンにある新しいサブネットが使用されるようにロードバランサーを更新します。

Tags

このロードバランサーに対する任意のタグのセット (キーと値のペア)。

Required: No

Type: AWS CloudFormation Resource Tags

更新に伴う要件: 中断はありません。

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref によりリソース名が返されます。 例, mystack-myelb-1WQN7BJGDB5YQ.

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

Fn::GetAtt

Fn::GetAtt は、このタイプの指定された属性の値を返します。以下には、利用可能な属性とサンプル戻り値のリストが示されます。

CanonicalHostedZoneName

ロードバランサーに関連付けられる Amazon Route 53 ホストゾーンの名前。

重要

Elastic Load Balancing スキームに対して internal を指定する場合は、代わりに DNSName を使用してください。internal スキームの場合、ロードバランサーは CanonicalHostedZoneName 値を持ちません。

例: mystack-myelb-15HMABG9ZCN57-1013119603.us-east-2.elb.amazonaws.com

CanonicalHostedZoneNameID

ロードバランサーに関連付けられる Amazon Route 53 ホストゾーン名の ID。

例: Z3DZXE0Q79N41H

DNSName

ロードバランサーの DNS 名。

例: mystack-myelb-15HMABG9ZCN57-1013119603.us-east-2.elb.amazonaws.com

SourceSecurityGroup.GroupName

ロードバランサーのバックエンド Amazon EC2 アプリケーションインスタンスのインバウンドルールの一部として使用できるセキュリティグループ。

例: amazon-elb

SourceSecurityGroup.OwnerAlias

ソースセキュリティグループの所有者。

例: amazon-elb-sg

Fn::GetAtt の使用の詳細については、「Fn::GetAtt」を参照してください。

ヘルスチェックとアクセスログが設定されたロードバランサー

JSON

Copy
"ElasticLoadBalancer" : { "Type" : "AWS::ElasticLoadBalancing::LoadBalancer", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : "" }, "Instances" : [ { "Ref" : "Ec2Instance1" },{ "Ref" : "Ec2Instance2" } ], "Listeners" : [ { "LoadBalancerPort" : "80", "InstancePort" : { "Ref" : "WebServerPort" }, "Protocol" : "HTTP" } ], "HealthCheck" : { "Target" : { "Fn::Join" : [ "", [ "HTTP:", { "Ref" : "WebServerPort" }, "/" ] ] }, "HealthyThreshold" : "3", "UnhealthyThreshold" : "5", "Interval" : "30", "Timeout" : "5" }, "AccessLoggingPolicy": { "S3BucketName": { "Ref": "S3LoggingBucket" }, "S3BucketPrefix": "MyELBLogs", "Enabled": "true", "EmitInterval" : "60" }, "DependsOn": "S3LoggingBucketPolicy" } }

YAML

Copy
ElasticLoadBalancer: Type: AWS::ElasticLoadBalancing::LoadBalancer Properties: AvailabilityZones: Fn::GetAZs: '' Instances: - Ref: Ec2Instance1 - Ref: Ec2Instance2 Listeners: - LoadBalancerPort: '80' InstancePort: Ref: WebServerPort Protocol: HTTP HealthCheck: Target: Fn::Join: - '' - - 'HTTP:' - Ref: WebServerPort - "/" HealthyThreshold: '3' UnhealthyThreshold: '5' Interval: '30' Timeout: '5' AccessLoggingPolicy: S3BucketName: Ref: S3LoggingBucket S3BucketPrefix: MyELBLogs Enabled: 'true' EmitInterval: '60' DependsOn: S3LoggingBucketPolicy

アクセスログが有効なロードバランサー

次のサンプルスニペットでは、ロードバランサーが情報を Logs/AWSLogs/AWS account number/ フォルダーに保存することを許可するバケットポリシーを持つ Amazon S3 バケットを作成します。このロードバランサーには、バケットポリシーへの明示的な依存関係も含まれています。ロードバランサーがバケットに書き込むためには、この依存関係をあらかじめ設定しておく必要があります。

JSON

Copy
"S3LoggingBucket": { "Type": "AWS::S3::Bucket" }, "S3LoggingBucketPolicy": { "Type": "AWS::S3::BucketPolicy", "Properties": { "Bucket": { "Ref": "S3LoggingBucket" }, "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "ELBAccessLogs20130930", "Effect": "Allow", "Resource": { "Fn::Join": [ "", [ "arn:aws:s3:::", { "Ref": "S3LoggingBucket" }, "/", "Logs", "/AWSLogs/", { "Ref": "AWS::AccountId" }, "/*" ] ] }, "Principal": { "Ref": "ElasticLoadBalancingAccountID" }, "Action": [ "s3:PutObject" ] } ] } } }, "ElasticLoadBalancer": { "Type": "AWS::ElasticLoadBalancing::LoadBalancer", "Properties": { "AvailabilityZones": { "Fn::GetAZs": "" }, "Listeners": [{ "LoadBalancerPort": "80", "InstancePort": "80", "Protocol": "HTTP" }], "HealthCheck": { "Target": "HTTP:80/", "HealthyThreshold": "3", "UnhealthyThreshold": "5", "Interval": "30", "Timeout": "5" }, "AccessLoggingPolicy": { "S3BucketName": { "Ref": "S3LoggingBucket" }, "S3BucketPrefix": "Logs", "Enabled": "true", "EmitInterval" : "60" } }, "DependsOn": "S3LoggingBucketPolicy" }

YAML

Copy
S3LoggingBucket: Type: AWS::S3::Bucket S3LoggingBucketPolicy: Type: AWS::S3::BucketPolicy Properties: Bucket: Ref: S3LoggingBucket PolicyDocument: Version: '2012-10-17' Statement: - Sid: ELBAccessLogs20130930 Effect: Allow Resource: Fn::Join: - '' - - 'arn:aws:s3:::' - Ref: S3LoggingBucket - "/" - Logs - "/AWSLogs/" - Ref: AWS::AccountId - "/*" Principal: Ref: ElasticLoadBalancingAccountID Action: - s3:PutObject ElasticLoadBalancer: Type: AWS::ElasticLoadBalancing::LoadBalancer Properties: AvailabilityZones: Fn::GetAZs: '' Listeners: - LoadBalancerPort: '80' InstancePort: '80' Protocol: HTTP HealthCheck: Target: HTTP:80/ HealthyThreshold: '3' UnhealthyThreshold: '5' Interval: '30' Timeout: '5' AccessLoggingPolicy: S3BucketName: Ref: S3LoggingBucket S3BucketPrefix: Logs Enabled: 'true' EmitInterval: '60' DependsOn: S3LoggingBucketPolicy

接続ストリーミングポリシーを持つロードバランサー

次のスニペットでは、登録解除されたインスタンスまたは異常なインスタンスへの接続を 60 秒後に終了する接続ストリーミングポリシーを有効にしています。

JSON

Copy
"ElasticLoadBalancer" : { "Type" : "AWS::ElasticLoadBalancing::LoadBalancer", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : "" }, "Instances" : [ { "Ref" : "Ec2Instance1" },{ "Ref" : "Ec2Instance2" } ], "Listeners": [{ "LoadBalancerPort": "80", "InstancePort": "80", "Protocol": "HTTP" }], "HealthCheck": { "Target": "HTTP:80/", "HealthyThreshold": "3", "UnhealthyThreshold": "5", "Interval": "30", "Timeout": "5" }, "ConnectionDrainingPolicy": { "Enabled" : "true", "Timeout" : "60" } } }

YAML

Copy
ElasticLoadBalancer: Type: AWS::ElasticLoadBalancing::LoadBalancer Properties: AvailabilityZones: Fn::GetAZs: '' Instances: - Ref: Ec2Instance1 - Ref: Ec2Instance2 Listeners: - LoadBalancerPort: '80' InstancePort: '80' Protocol: HTTP HealthCheck: Target: HTTP:80/ HealthyThreshold: '3' UnhealthyThreshold: '5' Interval: '30' Timeout: '5' ConnectionDrainingPolicy: Enabled: 'true' Timeout: '60'

複数のポリシーを持つロードバランサー

次のスニペットは、ポート 80 と 443 のリスナーでロードバランサーを作成します。このスニペットでは、ポート 80 のプロキシとポート 443 のバックエンドサーバー認証ポリシーが適用されます。

JSON

Copy
"ElasticLoadBalancer": { "Type": "AWS::ElasticLoadBalancing::LoadBalancer", "Properties": { "SecurityGroups" : { "Ref" : "SecurityGroups" }, "Scheme" : "internet-facing", "AvailabilityZones": { "Fn::GetAZs": "" }, "Listeners": [ { "LoadBalancerPort": "80", "InstancePort": "80", "Protocol": "TCP", "InstanceProtocol" : "TCP" }, { "LoadBalancerPort": "443", "InstancePort": "443", "Protocol": "HTTPS", "SSLCertificateId" : { "Ref" : "CertARN" }, "PolicyNames" : ["MySSLNegotiationPolicy", "MyAppCookieStickinessPolicy"] } ], "Policies" : [ { "PolicyName" : "MySSLNegotiationPolicy", "PolicyType" : "SSLNegotiationPolicyType", "Attributes" : [ { "Name" : "Protocol-TLSv1", "Value" : "true" }, { "Name" : "Protocol-SSLv2", "Value" : "true" }, { "Name" : "Protocol-SSLv3", "Value" : "false" }, { "Name" : "DHE-RSA-AES256-SHA", "Value" : "true" } ] }, { "PolicyName" : "MyAppCookieStickinessPolicy", "PolicyType" : "AppCookieStickinessPolicyType", "Attributes" : [ { "Name" : "CookieName", "Value" : "MyCookie" } ] }, { "PolicyName" : "MyPublicKeyPolicy", "PolicyType" : "PublicKeyPolicyType", "Attributes" : [ { "Name" : "PublicKey", "Value" : { "Fn::Join" : [ "\n", [ "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDh/51Aohx5VrpmlfGHZCzciMBa", "fkHve+MQYYJcxmNUKMdsWnz9WtVfKxxWUU7Cfor4lorYmENGCG8FWqCoLDMFs7pN", "yGEtpsrlKhzZWtgY1d7eGrUrBil03bI90E2KW0j4qAwGYAC8xixOkNClicojeEz4", "f4rr3sUf+ZBSsuMEuwIDAQAB" ] ] } } ] }, { "PolicyName" : "MyBackendServerAuthenticationPolicy", "PolicyType" : "BackendServerAuthenticationPolicyType", "Attributes" : [ { "Name" : "PublicKeyPolicyName", "Value" : "MyPublicKeyPolicy" } ], "InstancePorts" : [ "443" ] }, { "PolicyName" : "EnableProxyProtocol", "PolicyType" : "ProxyProtocolPolicyType", "Attributes" : [ { "Name" : "ProxyProtocol", "Value" : "true" } ], "InstancePorts" : ["80"] } ] } }

YAML

Copy
ElasticLoadBalancer: Type: AWS::ElasticLoadBalancing::LoadBalancer Properties: SecurityGroups: Ref: SecurityGroups Scheme: internet-facing AvailabilityZones: Fn::GetAZs: '' Listeners: - LoadBalancerPort: '80' InstancePort: '80' Protocol: TCP InstanceProtocol: TCP - LoadBalancerPort: '443' InstancePort: '443' Protocol: HTTPS SSLCertificateId: Ref: CertARN PolicyNames: - MySSLNegotiationPolicy - MyAppCookieStickinessPolicy Policies: - PolicyName: MySSLNegotiationPolicy PolicyType: SSLNegotiationPolicyType Attributes: - Name: Protocol-TLSv1 Value: 'true' - Name: Protocol-SSLv2 Value: 'true' - Name: Protocol-SSLv3 Value: 'false' - Name: DHE-RSA-AES256-SHA Value: 'true' - PolicyName: MyAppCookieStickinessPolicy PolicyType: AppCookieStickinessPolicyType Attributes: - Name: CookieName Value: MyCookie - PolicyName: MyPublicKeyPolicy PolicyType: PublicKeyPolicyType Attributes: - Name: PublicKey Value: Fn::Join: - "\n" - - MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDh/51Aohx5VrpmlfGHZCzciMBa - fkHve+MQYYJcxmNUKMdsWnz9WtVfKxxWUU7Cfor4lorYmENGCG8FWqCoLDMFs7pN - yGEtpsrlKhzZWtgY1d7eGrUrBil03bI90E2KW0j4qAwGYAC8xixOkNClicojeEz4 - f4rr3sUf+ZBSsuMEuwIDAQAB - PolicyName: MyBackendServerAuthenticationPolicy PolicyType: BackendServerAuthenticationPolicyType Attributes: - Name: PublicKeyPolicyName Value: MyPublicKeyPolicy InstancePorts: - '443' - PolicyName: EnableProxyProtocol PolicyType: ProxyProtocolPolicyType Attributes: - Name: ProxyProtocol Value: 'true' InstancePorts: - '80'

その他の例

サンプルテンプレートのコレクションからさらに AWS CloudFormation の例を参照することができます:「サンプルテンプレート」。

このページの内容: