【初学者用】AWS System Manager(SSM)はどのようなサービスか ~Parameter Store編~


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

はじめに

こんにちは。

 

株式会社協栄情報クラウド事業本部の伊藤です。

 

まず初めに、技術ブログを書くのは今回が初めてですので、
記事の中で間違っている部分がございましたらご教示いただければと思います。
 

目的

 
今回は、ハンズオン演習を通してAWS System Mnager(以下、SSM)というサービスについて

ちゃんと理解できていないなと感じたので、サービス全体の概要と目的を把握して

有効活用していけるように記事にまとめました。

 

本ブログでは、私が実際にハンズオン演習で使用した
「アプリケーション管理」の中の"パラメータシート"について
ピックアップしてハンズオンを行っております。

説明

SSMについて

SSMとは、「AWS上およびマルチクラウドやハイブリッド環境内のリソースを管理」するサービスです。
特徴は主に4つに分類されます。

 

【業務管理(運用データの一元化)】
 Explorer
 Opscenter
 Incident Manager

 

【アプリケーション管理(アプリケーションの問題解決・管理)】
 Application Manager
 App config
 パラメータストア

 

【変更管理(パッチ適用やリソース変更の自動化など)】
 オートメーション
 Change Manager
 メンテナンスウインドウ

 

【ノード管理(セキュリティイベントの修復)】
 Fleet Manager
 セッションマネージャ
 パッチマネージャ

 

このように、SSMを使用するときははAWSリソースのインフラを管理したいときです。

 

「障害発生した時の通知や障害発生時の記録が欲しい」といったときはIncident Mnanagerを使ったり、
 
「作業したいから承認者にリクエストしたい」ときはChange Managerを使用して、
 
それを"オートメーション"で安全に実行することが可能になったりします。

SSMを利用するためには「SSM Agent」を対象のEC2インスタンスへインストールしてあげる必要があります。

SSMのパラメータストアとは

EC2に対して構成変更を加えるときに使う設定ファイルを保存できる機能"のことです。

 

サービスを開発するときにパラメータストアに保存されているパスワードやデータ等を
パラメータストアから引っ張ってくることが可能になります。

 

今回のハンズオンでは、

 

①SSMからパラーメータ作成

②EC2インスタンス作成

③EC2にSSH接続し、CloudWatchAgentをインストール

④collectedをインストール
※DiskUsedPercentメトリクスを取得するため

⑤①で作成したパラメータを参照してCloudWatchAgentを起動

⑥実際にCloudWatchにEC2が反映されているか確認

 

の順番にやっていきます。

ハンズオンの構成

今回のハンズオンの構成図はこちらになります。

確認したいこと

今回は、EC2作成後に打つコマンドによってEC2の欲しい情報が

CloudWatchに反映できているかどうかを確認します。

ハンズオンの事前準備

ハンズオンを始めていく前に、前提として以下のものは作成済みとします。

 

【事前に作成したもの】
 
・インターネットゲートウェイ
 
・EC2インスタンス(パブリック)
※AMIはAmazon Linux 2を使用
※SSHでEC2に接続するためにセキュリティグループにはタイプSSHソースMYIP
 
・EC2用のIAMロール
(IAMポリシーにはCloudWatchAgentServerのみ)

 

では実際にやっていきます。

ハンズオン

 

①SSMからパラーメータ作成

設定項目 設定値 理由
名前 AmazonCloudWatch-demo-ito-blog CloudWatchAgentの設定パラメータとして使用する場合AmazonCloudWatchより始まる名前である必要がある
下記の値 DiskUsedpercentメトリクスとApacheのアクセスログを出力するため

 
※上記以外はデフォルトで作成しています。

 

・値の設定値

  
{
    "agent": {
            "metrics_collection_interval": 60,
            "run_as_user": "root"
    },
    "logs": {
            "logs_collected": {
                    "files": {
                            "collect_list": [
                                    {
                                            "file_path": "/var/log/httpd/access_log",
                                            "log_group_name": "/var/log/httpd/access_log",
                                            "log_stream_name": "{instance_id}"
                                    }
                            ]
                    }
            }
    },
    "metrics": {
            "append_dimensions": {
                    "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
                    "ImageId": "${aws:ImageId}",
                    "InstanceId": "${aws:InstanceId}",
                    "InstanceType": "${aws:InstanceType}"
            },
            "metrics_collected": {
                    "collectd": {
                            "metrics_aggregation_interval": 60
                    },
                    "disk": {
                            "measurement": [
                                    "used_percent"
                            ],
                            "metrics_collection_interval": 60,
                            "resources": [
                                    "*"
                            ]
                    },
                    "mem": {
                            "measurement": [
                                    "mem_used_percent"
                            ],
                            "metrics_collection_interval": 60
                    },
                    "statsd": {
                            "metrics_aggregation_interval": 60,
                            "metrics_collection_interval": 10,
                            "service_address": ":8125"
                    }
            }
    }
}
  

③EC2にSSH接続し、CloudWatchAgentをインストール

  
  wget https://s3.us-east-1.amazonaws.com/amazoncloudwatch-agent-us-east-1/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
  sudo rpm -U ./amazon-cloudwatch-agent.rpm
  

④collectedをインストール

  
 sudo amazon-linux-extras install collectd
  

※DiskUsedPercentメトリクスを取得するため

⑤①で作成したパラメータを参照してCloudWatchAgentを起動

  
 sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:AmazonCloudWatch-demo-itodaisuke-blog
  

※ssm:[SSMで作成したパラメータ名]

⑥実際にCloudWatchにEC2が反映されているか確認



作成したEC2のIDを検索します。

disk_used_percentが表示されていることを確認します。

 

これで、作成したEC2がCloudwatchに反映されていることが確認できました。

 

これを複数インスタンスに適用したい時は、

EC2インスタンス作成時に上記コマンドをユーザデータに入れてあげるともっと簡単に

しかも複数のインスタンスを作成したりも可能です。

 

※ユーザデータに適用する場合は、先頭に"#!/bin/bash"を入力する必要があるので注意が必要です。

まとめ

以上、社内演習でわからなかったサービスの1つに対して理解を深めることができました。
 
間違えている部分がありましたらご指摘頂けたらと思います。
 
まだまだ理解を深められていないサービスや、気になるサービスがあるので、
その都度、ブログを通してアウトプットしていきます。
 
ご一読ありがとうございました。

Last modified: 2023-07-15

Author