OPS

AWS Systems Manager (SSM) で考える、運用の自動化

AWS Systems Manager (SSM) で考える、運用の自動化

2021.09.28

本記事のポイント

AWSの運用負荷が高いとお悩みの方の中には、AWSリソースの運用実態を把握したり、運用管理の自動化ができる「AWS Systems Manager」を利用したいとお考え方も多いと思います。

本記事では、AWS Systems Managerを活用したオペレーションの自動化についてご紹介します。



はじめに

Amazon Web Services(以下、AWS)を利用している皆様の中で、手作業による運用負荷が高いとお悩みの方も多くいらっしゃるのではないでしょうか。運用の自動化はDevOpsの実践においても重要な要素となっています。

そこで今回は、AWSの運用管理を効率よく行うことができるAWS Systems Managerをご紹介します!

記事前半ではAWS Systems Managerの概要を、後半ではAWS Systems Managerを使用した運用の自動化の簡単な例についてお伝えします。ぜひご覧ください。

AWS Systems Managerの概要

AWS Systems Manager(SSM)とは、AWSの運用管理をスケーラブルかつコスト効率よく行うサービス群です。SSMは多くのサービスコンポーネントから構成されています。

以下、主要なコンポーネントの一覧です。

Explorer 運用アイテム情報などを表示するカスタマイズ可能なダッシュボード
OpsCenter 運用上の問題の確認、調査、解決を一元的に管理
Incident Manager 事前に準備した対応計画に基づくインシデント管理
Application Manager アプリケーション単位でのAWSリソースデータの表示、アクション実行
App Config アプリケーション設定の管理
Parameter Store 設定データを一元的に管理するストア
Change Manager 構成変更ワークフローの簡素化
オートメーション AWS環境全体に対する自動化処理の実行
メンテナンスウィンドウ タスクのスケジュール管理
Fleet Manager AWSおよびオンプレミスサーバの管理
コンプライアンス ログやパッチの適用状況などコンプライアンスの管理に必要なデータを表示
インベントリ サーバのシステム設定とインストールされたアプリケーションの把握
セッションマネージャー サーバへのブラウザベースのリモートアクセス
Run Command サーバ群の上でリモートコマンド実行
ステートマネージャー サーバ設定の一貫性の維持
パッチマネージャー 指定ルールに基づいたサーバ群へのパッチ適用
ディストリビュータ サーバへのパッケージの配信およびインストール

各コンポーネントの詳細については以下の参考サイトなどでご確認ください。

参考サイト
  • AWS Systems Manager(AWS公式サイト)
  • 20200212 AWS Black Belt Online Seminar AWS Systems Manager(AWS 公式オンラインセミナー)
  • 運用の自動化への活用

    続いて、運用の自動化への活用方法について考えていきたいと思います。運用において、手順にのっとり何ステップもの作業を手で行っているケースでは、「オートメーション」を活用して自動化することができます。

    そこで、「オートメーション」を使用した自動化を簡単な例で実施してみたいと思います。

    オートメーションを使用したオペレーションの自動化

    ここでは簡単な例として、必要な時のみに起動するシステム環境を想定し、その起動を一括で行うように自動化してみます。

    当想定ケースにおける前提は以下のとおりです。

  • EC2とRDSを使用しているシステムである
  • 各環境はリソースタグで定義される
      (「Env」というキーで、開発環境は「dev」が設定されている)
  • ランブックの作成

    「オートメーション」で使用する「ランブック」には、AWSによって管理されている事前定義のランブックが存在します。特定のユースケースにおいてはこのAWS管理のランブックのみで対応可能な場合もあります。 今回はAWS管理のランブックを組み合わせて、EC2、RDSインスタンスを起動するランブックを新規作成したいと思います。

    左メニューの「ドキュメント」 > 右上の「Create document」 > 「Automation」を選択します。

    AWS Systems Manager(SSM)-Automation

    ランブックの名前を入力し、ドキュメントエディタで実行するオペレーションを定義します。

    AWS Systems Manager(SSM)-ドキュメントエディタ

    ドキュメントエディタで定義した内容について軽く説明します。起動したい環境名を入力として受け取るため、parametersセクションに「Env」パラメータを定義しています。

    オペレーションはmainStepsセクションに各ステップとして定義します。当ランブックではEC2を起動するステップとRDSを起動するステップが存在し、各ステップは以下の様に定義しています。

  • action: 既存のランブックを子ランブックとして実行するため「aws:executeAutomation」を指定します
  • DocumentName: 既存のランブックの名前を入力します
  • DocumentVersion: 既存のランブックのバージョンを入力します
  • Targets: 各環境はリソースタグ「Env」で定義するため、Keyには「tag:Env」を指定します。Valuesは当ランブックの「Env」パラメータを参照する記述となっています。
  • TargetParameterName: EC2、RDSを起動する子ランブックは、ともにインスタンスをターゲットとし、「InstanceId」が入力パラメータとなっているため「InstanceId」を指定します。

  • 内容を確認したら、「オートメーションを作成する」ボタンをクリックして保存します。

    ランブックの実行

    左メニューの「ドキュメント」 > 右上の「自己所有タブ」> 前節で作成したランブックを選択します。

    AWS Systems Manager(SSM)-ランブック

    右上の「オートメーションを実行する」をクリックします。

    AWS Systems Manager(SSM)-オートメーションを実行

    「シンプルな実行」を選択し、入力パラメータ「Env」を入力します。
    今回は開発環境を示す「dev」を入力します。
    最後に「実行」ボタンをクリックします。

    AWS Systems Manager(SSM)-Envとdev

    実行ステータスを示す画面が表示され、しばらくして実行が成功した場合にはステータスが変化します。

    今回は停止中のEC2インスタンスが2インスタンス、停止中のRDSインスタンスが1インスタンス起動しましたが、完了するまで(ステータスが成功になるまで)に10分ほどかかりました。

    AWS Systems Manager(SSM)-ステータス

    以上、オートメーションを使用して特定環境のインスタンス起動オペレーションを自動化することができました。

    参考サイト
  • 例1:親子のランブックの作成(AWS Systems Managerユーザーガイド)
  • ターゲットについて(AWS Systems Managerユーザーガイド)
  • さらなる自動化へ向けて

    オペレーション自動化の範囲

    前節では既存のランブックを組み合わせてEC2インスタンス、RDSインスタンスの起動を行いました。これは「action」に「aws:executeAutomation」を指定することで実現していました。

    指定できる自動化アクションは様々な種類があり、AWS APIを呼び出すアクション、AWS Step Functions ステートマシンを実行するアクション、AWS Lambda関数を呼び出すアクションなどもあるため、様々なAWSリソースに対するオペレーションが自動化できます。

    また、手動承認のためにランブックの実行を一時停止するアクションや条件に基づきオペレーションを分岐させるためのアクション、AWSリソースが特定の状態になるまで待機するアクションなどもあり、複雑なオペレーションの自動化も可能です。

    指定できるアクションに関しては以下を参照してください。

  • Systems Manager Automation アクションのリファレンス(AWS Systems Managerユーザーガイド)
  • 実行の自動化

    前節ではマネジメントコンソール上で実行したいランブックを指定して実行しましたが、ランブックは他のコンポーネントやAmazon EventBridgeなどをトリガーとして実行することができます。

    例えば、SSMのステートマネージャーやメンテナンスウィンドウをトリガーとすることでスケジュールに基づいて実行することができます。前節で示した簡単な例ではインスタンスの起動オペレーションを自動化しましたが、停止に関してもランブックで自動化しておき、休日前に停止、休み明けに起動するようスケジュールを設定しておけば時間課金によるコストを削減することも可能です。

    ステートマネージャーとメンテナンスウィンドウの使い分けについては以下を参照してください。

  • ステートマネージャーウィンドウとメンテナンスウィンドウの選択(AWS Systems Managerユーザーガイド)
  • まとめ

    今回は、AWS Systems Managerのサービスコンポーネントであるオートメーションを活用したオペレーションの自動化の簡単な例を紹介しました。また、さらなる自動化へ向けて、オートメーションで使用するランブックが幅広いオペレーションの自動化に活用できることと、自動化したオペレーションの実行も自動化できることもご紹介しました。

    AWS Systems Managerにはパッチマネージャーを使用したパッチ適用の自動化など他にも自動化に活用できるコンポーネントがありますので、運用の自動化の際にはAWS Systems Managerを活用することを検討されてはいかがでしょうか。

    最後に、AWS Systems Managerの設定を行う時間が確保できない、難しい、という方には AWSの監視や運用を委託するのも一つの手 です。

    当社では、24時間365日 AWSの監視・障害対応・運用保守を一括代行するサービス をご提供しています。もしご興味がございましたら、ぜひお気軽にご相談ください。
    最後までお読みいただき、ありがとうございました。


    > AWS の面倒な運用や障害対応、まるっとお任せ!

    > AWS利用料 今なら8%OFF – 利用中の方も、アカウント移管だけで割引適用