24時間365日フルマネージドホスティングサービスのデイーネット

  • HOME
  •  
  • 技術情報ブログ
  •  
  • [AWS CloudFormation] Classic Load BalancerのLoadBalancerNameの説明がよく分からない。

[AWS CloudFormation] Classic Load BalancerのLoadBalancerNameの説明がよく分からない。

こんにちはY.Oです。

先日、Classic Load Balancerを含むCloudFormationテンプレートの変更セットを作成する機会があり、 ユーザーガイドのAWS::ElasticLoadBalancing::LoadBalancerを確認していましたところ、LoadBalancerNameについて気になる説明を見つけました。

重要

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

初めて見たとき、上記の説明がよく分かりませんでした。
特に、リソース置換を伴う更新の辺りが。

恐らく次のようなことだろうなぁと理解しました。

「LoadBalancerNameでLBの名前を設定している場合、リソース置換を伴うプロパティを更新する為には、 LoadBalancerNameで設定した名前も併せて更新する必要がある。」

理解が間違っているといけないので、実際に簡単なCloudFormationテンプレートを作って、 次の内容を試してみることにしました。

  • 設定したLoadBalancerNameを変更しないで、リソースの置換が必要なプロパティ更新を行う。
  • 設定したLoadBalancerNameを変更して、リソースの置換が必要なプロパティ更新を行う。


まず、つぎのようなCloudFormationテンプレートでClassic Load Balancerを作ります。


{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "Test ELB Stack",
  "Resources": {
    "TestELB": {
      "Type": "AWS::ElasticLoadBalancing::LoadBalancer",
      "Properties": {
        "LoadBalancerName" : "TestELB01",
        "Listeners": [ {
          "LoadBalancerPort" : "9000",
          "InstancePort" : "9000",
          "Protocol" : "TCP"
        } ],
        "Subnets" : [
          "subnet-5688dd1f", "subnet-c7f9789c"
        ]
      }
    }
  }
}

次に、リソースの置換が必要なプロパティの更新を行います。
ユーザーガイドによると、HealthCheckを指定していない状態から指定するように変更すると、置換が必要な変更となるようです。

まずはHealthCheckの初期値を確認しておきます。

ELB_Pic01.png

以下のような結果でした。 Target : TCP:9000
Timeout : 5
Interval : 30
UnhealthyThreshold : 2
HealthyThreshold : 10

これを踏まえて、次のような更新用のテンプレートを作成しました。
Intervalを初期値より小さい20にしています。
LoadBalancerNameはまだ変更していません。


{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "Test ELB Stack",
  "Resources": {
    "TestELB": {
      "Type": "AWS::ElasticLoadBalancing::LoadBalancer",
      "Properties": {
        "LoadBalancerName" : "TestELB01",
        "Listeners": [ {
          "LoadBalancerPort" : "9000",
          "InstancePort" : "9000",
          "Protocol" : "TCP"
        } ],
        "Subnets" : [
          "subnet-5688dd1f", "subnet-c7f9789c"
        ],
        "HealthCheck" : {
          "Target" : "TCP:9000",
          "Timeout" : "5",
          "Interval" : "20",
          "UnhealthyThreshold" : "2",
          "HealthyThreshold" : "10"
        }
      }
    }
  }
}

変更セットを適用してみます。
ELB_Pic02.png 変更セットが失敗に終わり、ロールバックしてしまいました。
「状況の理由」欄にもちゃんと「Rename TestELB01 and update the stack again.」と表示されていますね。

次に、LoadBalancerNameを変えた変更セットを作ってみます。
TestELB01からTestELB02へ変更しています。


{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "Test ELB Stack",
  "Resources": {
    "TestELB": {
      "Type": "AWS::ElasticLoadBalancing::LoadBalancer",
      "Properties": {
        "LoadBalancerName" : "TestELB02",
        "Listeners": [ {
          "LoadBalancerPort" : "9000",
          "InstancePort" : "9000",
          "Protocol" : "TCP"
        } ],
        "Subnets" : [
          "subnet-5688dd1f", "subnet-c7f9789c"
        ],
        "HealthCheck" : {
          "Target" : "TCP:9000",
          "Timeout" : "5",
          "Interval" : "20",
          "UnhealthyThreshold" : "2",
          "HealthyThreshold" : "10"
        }
      }
    }
  }
}

変更セットを適用してみます。 ELB_Pic03.png UPDATE_COMPLETEと表示されました。無事に置換が必要な適用が完了しました。

念のため、ロードバランサーのヘルスチェックも確認します。 ELB_Pic04.png こちらもちゃんと間隔が20秒に変更されました。

理解は間違っていなかったようです。よかった!

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar