CloudFormation の起動設定に変更がないときに、ローリング更新を開始するにはどうすればよいですか?

所要時間1分
0

AWS CloudFormation スタックの更新ごとに、起動設定を変更せずに Auto Scaling グループのローリング更新を開始したいと考えています。

簡単な説明

Auto Scaling グループのローリング更新は、UpdatePolicy 属性の特定の条件が満たされた場合にのみ開始できます。

ローリング更新を開始するには、CloudFormation テンプレートの起動設定にトグルパラメータを作成します。ただし、スタック更新中に [Toggle] パラメータの値を変更した場合、[UserData] プロパティが変更されます。UserData の修正には、置換が必要です。CloudFormation は [UserData] への変更を検出し、次に [LaunchConfiguration] リソースを置き換えます。この置き換えにより、UpdatePolicy 属性で定義されている Auto Scaling のローリング更新が開始されます。

解決方法

次の手順では、AutoScalingRollingUpdate ポリシーが Auto Scaling グループに設定されており、Auto Scaling グループが [LaunchConfiguration] を参照するように設定されていると仮定しています。

重要: [Toggle] パラメータをテンプレートに追加するときは、[UserData] プロパティ内の他の要素を乱さないように注意してください。cfn-signal の前に [Toggle] パラメータを追加しないでください。

1.    CloudFormation テンプレートで、パラメータとして Toggle を定義します。

JSON:

"Parameters": {
        "Toggle": {
            "Type": "String",
            "AllowedValues": ["true","false"],
            "Default": "true"
        }
    }

YAML:

Parameters:
  Toggle:
    Type: String
    AllowedValues:
      - 'true'
      - 'false'
    Default: 'true'

2.    テンプレートの起動設定で、[UserData] プロパティの [Toggle] パラメータを参照してから、スタックを起動します。以下の JSON と YAML の例を参照してください。

JSON:

"LaunchConfig" : {
  "Type" : "AWS::AutoScaling::LaunchConfiguration",
  "Properties" : {
     "ImageId" : { "Ref" : "ImageID" },
     "UserData" : { "Fn::Base64" : { "Ref" : "Toggle" }
         ...
         ...
     },        
  "InstanceType" : { "Ref" : "Type" }
  }
}

YAML:

LaunchConfig:
  Type: 'AWS::AutoScaling::LaunchConfiguration'
  Properties:
    ImageId: !Ref ImageID
    UserData:
      'Fn::Base64': !Ref Toggle
      ...
      ...
    InstanceType: !Ref Type

重要: スタックを更新するときにローリング更新をト開始するには、ス初期設定に応じて、パラメータの値を [true] から [false]、または [false] から [true] に変更します。

注意: 更新が置き換えを必要とするプロパティ (LaunchConfigurationName など) や AWS::EC2::LaunchTemplate などのリソースに対して Toggle パラメータソリューションを使用できます。


AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ