AWS Systems Manager AutomationでALB配下のEC2へ安全なパッチ適用を実現する

AWS

2023.3.30

Topics

こんにちは、tkgです。
AWSにおいて、一般的にEC2などのパッチ適用の自動化には Systems Manager(SSM)のPatch Managerと各種SSMサービスを組み合わせて実装すると思います。
しかし、ALB配下のEC2に再起動を伴うパッチ当てが行われたとき、ヘルスチェックが行われるまでの時間はターゲットグループ上でHealthyステータスですので、一時的な接続エラーが発生しうることになります。

対応としては、ターゲットグループから一旦切り離すという手法が取れますが、手動対応はかなり時間がかかります。
今回はAWSが提供しているAutomationランブックが使えそうでしたので、そちらの動作確認と、自動化を実現してみました。

利用するSSM Automationについて

今回利用する Automationランブックは、 AWSEC2-PatchLoadBalancerInstanceです。

ユーザーガイドに記載のフローをより詳しく記載すると、下記のとおりになります。

  1. [SSM Automation]対象のインスタンスでSSM Agentが動作していることを確認
  2. [CloudFormation]ターゲットグループからの切り離し/切り戻しを実現するLambda等のリソースを作成
  3. [lambda]ターゲットグループからの切り離し
  4. [SSM Patch Manager]インスタンスにパッチを適用
  5. [lambda]パッチ適用完了後、ターゲットグループへの再接続

手動実行してみる

それでは実際に動作しているところを確認したいと思います。
今回の検証ではALB配下のターゲットグループに2台のEC2を配置しています。
また、こちらのサーバーを識別するため、タグkey:valueに "ALB":"alb01"を指定しています。

まず、 AWSEC2-PatchLoadBalancerInstance のページ右上から オートメーションを実行する を選択します。

遷移したページでレート制御を選択します。
ターゲット設定の中を下記の通り設定します。

パラメータ: InstanceId
ターゲット: タグ
タグキー: ALB
タグの値: alb01
※addを押し忘れない

また、Rate controlのConcurrencyは 1 を設定しておきます。
これで同時実行数を1台とすることが可能です。

その他項目は初期設定のまま、実行を選択します。
するとAutomationが実行され、ステータス表示画面に遷移します。
しばらくすると実行ステップが表示されます。

こちらのステップIDを選択し、さらにステップ実行IDを選択するとインスタンスに対して実行されているステップのステータスが閲覧可能です。

ちょうど切り離し待ちのステップのようなので、ターゲットグループを確認すると切り離しが実行され、Drain状態になっていることが確認できました。

あとはインスタンスに対しての実行ステップが進行しターゲットグループへの再登録が行われ、
ステップが完了すればこのインスタンスのパッチ当ては完了です。
引き続き、設定した通り該当するタグのサーバーへの動作が進行し、該当サーバーすべてへの対応が完了したら動作終了です。

自動化する

先程は手動実行からの自動処理ということで半自動化にすぎませんでしたが、完全自動化できたほうがなお良いと思います。
Systems Manager メンテナンスウィンドウのタスク設定でAutomationを呼び出すことができますので、
そちらに設定していくのですが……デフォルトで呼び出されるサービスロールではうまく動かないため、
別途IAMロールを指定してあげる必要がありました。

Amazon所有のランブックはクローンの作成が可能ですので、クローンした上で "assumeRole": "ROLE_ARN"のような設定を入れ、適切な権限をセットすることで動作は可能です。
あとはメンテナンスウィンドウ上でタスク設定、ターゲットを指定してあげるだけで定期自動処理自体は可能となります。
構成としては、下記のような形になります。

注意点

このAutomationランブックの仕様上、SSM Agentが動作するマネージドインスタンスであれば毎回切り離し・切り戻しが実行されてしまいます。
うまくAutomationのステップで条件分岐してやることで例外処理的な動作も可能かもしれません。

まとめ

通常のPatch Managerの設定だけでは難しかった ALB配下のサーバーに対して、影響を出さずにパッチを当てることができました。
AWSのリファレンス以上の情報少ないAWS Systems Manager ドキュメントですが、うまく検証・活用することで更なる自動化が実現できるかもしれませんね。

tkg

2016年入社のインフラエンジニアです。 写真が趣味。防湿庫からはレンズが生え、押入れには機材が生えます。 2D/3DCG方面に触れていた時期もありました。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら