[レポート] 【初級】AWS におけるシステム運用管理の自動化 #AWSSummit

AWS Summit Tokyo 2019 Day1 で開催された「【初級】AWS におけるシステム運用管理の自動化」についてレポートします。

目次

セッション情報

スピーカー:橋本 拓也氏 (アマゾン ウェブ サービス ジャパン株式会社)

セッション名:【初級】AWS におけるシステム運用管理の自動化

AWS が提供する運用管理の自動化ソリューションを活用することで、オペレーションコストを最小限に抑えることができます。本セッションでは AWS Systems Manager、AWS Config、Amazon CloudWatch などを活用して、人の手を煩わせずに AWS 上に構築したシステムを運用・管理するための基本的なノウハウをご紹介します。

自己紹介

  • クラウドサポートエンジニア、入社5年目
  • スタートアップでWebアプリの開発、インフラ管理を行っていた
  • 夜間対応などもあったので、自動化に興味があった

セッションのねらい

  • 下記のような人に運用の自動化に向けた第一歩を伝える
    • 効率的な運用がまだできていない人
    • クラウドのメリットが受けれてない人

アジェンダ

  • システム運用の課題と、AWSを活用した自動化による解決
    • AWS Systems Manager(SSM)でハイブリッド環境のサーバ運用を自動化
    • AWS Config でリソースの変更を追跡
    • Amazon CloudWatch Events でイベントに自動的に反応
  • 自動化の発展と例外への対応

システム運用の課題と、AWSを活用した自動化による解決

  • ガバナンスとアジリティの観点から考える自動化
    • ガバナンス
      • モニタリング、管理/監査、レポート
    • アジリティ
      • 実験/挑戦、生産性、変化への追従
    • お互いはトレードオフの関係にある
    • AWSでは両方を実現することができる
    • 鍵は運用の自動化
  • 自動化によって解決できる運用の課題
    • 課題
      • オペレーションミスが避けれない
      • イベントの検知と対処にタイムラグが発生する
      • 厳密に運用するほど、人的コストが増大する
    • 解決
      • オペレーションミスの可能性が低くなる
      • イベントに対してすばやく反応することができる
      • 定型的な作業の人的コストを削減することができる
  • 注意 :何を自動化するか、慎重に選択する
    • 自動化する、という仕事それ自体にもコストがかかる
    • 自動化対象として適している作業の特徴
      • 単純な作業である
      • 手順が固まっている
      • 繰り返し発生する
  • AWSにおいて運用自動化を担うサービス軍
    • リソースとアプリケーションを監視すする
      • Amazon CloudWatch
    • ユーザの操作とリソース設定を継続的に監査する
      • AWS CloudTrail
      • AWS Config
    • リソースを管理してオペレーションを実行する
      • AWS Systems Manager

AWS Systems Manager(SSM)でハイブリッド環境のサーバ運用を自動化

  • SSMとはどんなサービスなのか
    • オンプレとEC2を両方管理できる
    • SSMエージェントが必要(Linux、Windows)
    • ハイブリッド環境を管理できる

 

  • 課題:どのサーバに何がインストールされているかわからない
    • OSバージョンは何か?
    • 必要なアプリケーションが入っているか?
    • 不要なアプリケーションが入っていないか?
    • セキュリティパッチ適用済みのバージョンか?
  • SSMインベントリで解決できる
    • SSMエージェントがOSやアプリケーションの構成情報を収集してきてくれる
  • インベントリの収集と詳細な分析
    • 複数のアカウント、リージョン、オンプレミスの環境
      • インベントリ情報を一括して取得できる
    • Athenaでインベントリに対してクエリが実行できる
      • カーネルバージョンなどで検索などができる

 

  • 課題:たくさんのサーバに対して、定期的に同じ処理を行いたい。毎週金曜日の夜にサーバを停止し、毎週月曜日の朝に再開させるなど。
    • オペレーションミスの可能性
    • 単純作業であったとしても、作業工数がかかる
    • 対象サーバ群は前回と同じか?追加や削除はなかったか?
  • SSMメンテナンスウィンドウで解決できる
    • 決まった時間に、マネージドインスタンス群に対して指定したタスクを実行できる
      • 「SSM ドキュメント」という形で定義されたタスクを実行
      • AWSの提供する定義済みSSMドキュメント(100種類以上)が利用可能
      • もしくは、要件にあわせて独自にドキュメントを定義
    • SSMドキュメントの具体例
      • AWS-StopEC2Instance:EC2インスタンスを停止する
      • AWS-CreateImage:EC2インスタンスからAMIを作成する
      • AWS-CopySnapshot:データボリュームのスナップショットを複製する
      • AWS-RunPowerShellScript:任意のPowerShellスクリプトを実行する
    • ドキュメントのタイプ
      • Automation
        • AWSサービスに処理を指示
      • Command
        • サーバの中でコマンドを実行

 

  • 課題:運用中のサーバが「あるべき状態」を保っているか不安
    • アンチウィルスソフトが起動しているか定期的にチェックなど
    • 人で作業しているとミスが発生する
    • 人でチェックしていると検知するまでの時間、修正作業が発生する
  • SSMステートマネージャで解決できる
    • 「あるべき状態」を保つため、定期的にSSMドキュメントを実行
      • インストールされていなければインストールする
      • インストールされていて起動していない場合は起動する
      • AWS-RunAnsiblePlaybookを実行してあるべき状態にする
      • AWS-InstallPowerShellModule を使用して、PowerShell DSCを実行する

AWS Configでリソースの変更を追跡

  • 課題:AWSリソースが「あるべき状態」を保っているか不安
    • 誰がいつ、どのような変更を行ったのか、状態の履歴を記録したい
    • 違反状態を検知した場合、修復のために割り込み作業が発生してしまう
  • AWS Configで解決できます
    • リソースの変更履歴を保持
    • ルールに反する変更を修復
      • Configルールと修復アクションを設定しておくと自動的に修復される
    • 修復アクション
      • Automationタイプのドキュメントを使用する
  • マネージドルールでは80以上のルールを提供している
    • s3-bucket-public-read-prohibited: S3がパブリックになっていないか
    • required-tags:リソースに指定したタグが付与されていること
      • タグによるコスト分析を行っている場合などに使用
    • access-key-rorated:指定した日数以内にアクセスキーがローテーションされていること

Amazon CloudWatch Eventsでイベントに自動的に反応

  • 課題:定型的な運用に人手がかかってしまっている
    • 特定のイベントが発生した際に、なるべく早く何らかの対処を行う
  • CloudWatch Eventsで解決できる
    • イベントソースとターゲットをルールで紐付けるサービス
      • イベントソースはIAMやEC2
      • ターゲットはLambdaやSNS
    • EC2が停止したイベントにLambdaやSNSをターゲットとして実行できる
  • 自動化の例
    • 管理者以外によるアクセス権限の変更を検知したい
      • IAMの変更を誰かが行った
      • Lambdaが実行され、操作のチェックを行う
      • 違反していればメールを送信、権限の剥奪
  • SSMとCloudWatch Eventsの使い分け
    • どちらを使ってもいいが、より適している方を使用する
    • SSM
      • SSMエージェントによって管理対象に何かをしたいとき
    • CloudWatch Events
      • 汎用的なイベントドリブントリガーとして機能する
      • 何らかの出来事に反応してタスクを実行したいとき

自動化の発展と例外への対応

  • 自動化はいちど設定すれば終わりではない
  • 現実的には、すべてをいちどに自動化することは困難
    • 運用の自動化は発展を続けるプロセス
  • まずは、繰り返しの回数の多い単純作業から部分的に自動化
  • 自動化されていない作業を拾い集めて、範囲を広げる
    • まだ自動化できていない例外的な状況に、以下に対応するか

 

  • 例:SSMセッションマネージャの活用
    • 課題:自動化から漏れていた作業が発覚し、例外的にEC2インスタンスにログインして操作する必要が生じた
      • 例外的にポートを開けるなどはしたくない
      • SSMセッションマネージャを使用するとブラウザなどからサーバを操作することができる
      • 操作記録がCWに残る
      • SSHのポートが閉じていても使用することができる
  • SSM 新機能 OpsCenterの紹介
    • オペレーターのTODOリストみたいなもの

まとめ

AWSサービスで運用の課題を解決する

課題 サービス
どのサーバに何がインストールされているのかわからない SSM インベントリ
たくさんのサーバに対して、定期的に同じ処理を行いたい SSM メンテナンスウィンドウ
運用中のサーバが「あるべき状態」を保っているか不安 SSM ステートマネージャ
運用中のAWSリソースが「あるべき状態」を保っているか不安 AWS Config
定期的な運用に人手がかかってしまっている Amazon CloudWatch Events

感想

私自身あまりSSMを使っていなかったのですが、使いこなすととてつもなく便利だなと感じました。どんどん触ってお客様の運用に活かせればと思いました。