LoginSignup
2
0

More than 1 year has passed since last update.

スキップマッチングを使用して Auto Scaling グループを更新する

Last updated at Posted at 2021-12-22

はじめに

DX技術本部の yu-yama です。

の記事の

インスタンスに目的の設定が既に存在する場合、そのインスタンスの置換をインスタンス更新で回避できるようになりました。この機能を使用すると、目的の設定に一致する設定のインスタンスをスキップすることによって、迅速なロールフォワードやロールバックが可能になります。この追加のインスタンス更新コントロールは、インスタンス更新が失敗した場合や完了前にキャンセルされた場合に ASG を更新する際に便利です。この機能は、EC2 起動テンプレートを使用して目的のインスタンス構成設定を定義します。

の部分の解説をします。

これまでは

以下の構成で運用していて
20211222_awsqiita.drawio (1).png

インスタンスをv1からv2にバージョンアップする際に失敗した場合
20211222_awsqiita.drawio (2).png

全ての更新をやり直す必要があった
20211222_awsqiita.drawio (4).png

今回の更新によって

失敗したもののみインスタンスの更新を行うことができるように!
20211222_awsqiita.drawio (5).png

具体的なやり方(起動テンプレートのデフォルトバージョンへの移行)

現時点(2021/12/22)ではまだAWS SDK、AWS CLI しか対応してない模様です。マネコン未対応。

上記参考に config を用意して

config.yaml
{
    "AutoScalingGroupName": "yu-yama-asg",
    "DesiredConfiguration": {
      "LaunchTemplate": {
          "LaunchTemplateId": "{起動テンプレートのID}",
          "Version": "$Default"
       },
       "MixedInstancesPolicy": {
          "LaunchTemplate": {
               "Overrides": [
                       {"InstanceType": "t1.micro"}
               ]
          }
       }
    },
    "Preferences": {
        "InstanceWarmup": 400,
        "MinHealthyPercentage": 50,
        "SkipMatching": true
    }
}

のように config.yamlに "SkipMatching": true を記載して、コマンドを実行すると、

$ aws autoscaling start-instance-refresh --cli-input-json file://config.json

起動テンプレートのデフォルトバージョンを既に使用しているインスタンスに対しては更新がスキップされます。

注意

実行にはaws-cli v2.4.7 を使用しました

$ aws --version
aws-cli/2.4.7 Python/3.8.8 Linux/5.10.75-79.358.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off

最後に

全てをやり直しすることなくインスタンスの更新が出来る地味にうれしいアップデートですね。
こちらの記事が誰かの役に立てば幸いです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0