SSMまとめ

# 概要
AWS Systems Manager(通称SSM)にふれる機会があったので、
知ったことをまとめておく

# SSMとは
AWSの構成管理ツールのサービスである。

SSMを利用するためには、「SSMエージェント」を操作対象のEC2インスタンスへインストールする必要がある。

SSMには、EC2に対して構成変更を加えるときに使う設定ファイルを保存できる「パラメータストア」という機能があり、EC2に対してエージェントのインストールやパラメータストア内に保存した設定ファイルを選択してのエージェントの起動ができる。、
エージェントとしては例えばCloudWatchエージェントをSSHログインして直接作業せずとも、SSMコンソール経由でインストール、起動できる。

例えば冗長構成のEC2インスタンスがあり、各インスタンスへCloudWatchエージェントをインストール、設定を適用して起動・・・とやりたい場合、パラメータストアに保存した設定ファイルを使いまわしつつSSMコンソール経由で作業できるため、楽にミスなく作業できるというメリットがある。

# SSMエージェントのセットアップ
## 1. インストール
参考記事：https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-manual-agent-install.html

例. EC2インスタンスのディストリビューションがUbuntu14.04の場合
  
```
# EC2インスタンスへSSHログイン

# 一時ディレクトリを作成
mkdir /tmp/ssm

# 一時ディレクトリへ移動
cd /tmp/ssm

# SSMエージェントのパッケージをDL
wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb

# SSMエージェントをインストール(インストールとともにデーモンとして起動する)
sudo dpkg -i amazon-ssm-agent.deb

# SSMエージェントのステータスを確認
sudo status amazon-ssm-agent
=>amazon-ssm-agent start/runningと表示されればOK
  ※なお、以降はEC2インスタンスを再起動した場合も自動的に立ち上がるようになる
```
以上

## 2. SSMコンソールでの疎通確認
SSMコンソールページへアクセス　＞　インスタンスとノード-マネージドインスタンス
→SSM管理対象のEC2インスタンスが一覧表示される
![スクリーンショット 2020-05-29 17.52.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59542/8dcd54d2-9dc1-102d-7fd3-5406fd3cd0a3.png)


一覧にSSMエージェントをインストールしたインスタンスがあればOK

以上

# SSMコンソールからEC2へ任意のエージェントをセットアップ
※例. CloudWatchエージェントの場合 (＆Ubuntu 14.04の場合)

## 1. インストール
**SSMコンソールへアクセス > 「インスタンスとノード」 > 「マネージドインスタンス」ページで対象のインスタンスにチェックを入れて、「アクション」 > 「コマンドを実行」 と押下**![スクリーンショット 2020-05-29 18.14.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59542/d50147f1-7f21-42e8-2077-1015de8ab58a.png)
→「コマンドの実行」ページが表示される
![スクリーンショット 2020-05-29 18.17.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59542/8a80679c-ca61-3456-9798-3b250ca6dc4a.png)


**「コマンドの実行」ページの「コマンドドキュメント」セクションで「AWS-ConfigureAWSPackage」にチェックを入れる > 「コマンドのパラメータ」セクションの「Action」で「install」を選択 > 「Name」で「AmazonCloudWatchAgent」を入力 > 「Version」で「latest」を選択 > 「ターゲット」セクションで「インスタンスを手動で選択する」を選択し、「Instances」でCloudWatchエージェントをインストールするEC2インスタンスにチェックを入れる > 「実行」を押下**
→コマンドID: XXXXXXXのページが表示される。（しばらく待ってF5で更新してステータスが成功になればOK）
 これにより、内部的にはaptでのインストールが走る模様。

# 2. インストール確認
**対象のEC2インスタンスへSSHログインして以下のコマンドでCloudWatchエージェントがインストールされていることを確認(ubuntu14.04の場合)**

  ```
  # EC2へSSHログイン

  # 目的のエージェントのインストール確認
  apt list --installed | grep cloudwatch
  =>amazon-cloudwatch-agent XXXXXX [installed,local]
  と表示されていればOK
  ```

# パラメータストア
## 設定ファイルの編集
SSMコンソールへアクセス > アプリケーション管理-パラメータストア > 編集したい設定ファイルを選択して「編集ボタンを押下」
![スクリーンショット 2020-05-29 19.51.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59542/b59ac9e1-dfba-d0b6-8f45-96db2f50f5d7.png)
→「パラメータの詳細」ページへ遷移
![スクリーンショット 2020-05-29 19.53.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59542/96ace10b-07c5-9978-352f-818faa5bfed1.png)

「パラメータの詳細」ページの「値」フィールドを編集して、「変更の保存」を押下

以上

なお、無料利用枠の場合は設定ファイルの文字数は4096文字までとなっている。
半角スペースもカウントされるので注意。節約したいならときには可読性を犠牲にする必要も。

# SSMコンソールからEC2の任意のエージェントを起動
**例. CloudWatchエージェントの場合 (＆Ubuntu 14.04の場合)**

SSMコンソールへアクセス　＞ インスタンスとノード-Run Command > 「Run Command」ボタンを押下
![スクリーンショット 2020-05-29 20.33.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59542/f5f58df4-b869-907a-967a-df6e87bd67db.png)!
→「コマンドの実行」ページが表示される。
![スクリーンショット 2020-05-29 20.34.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59542/f84d11f6-16a4-ba6d-5489-2ca7adf3eb3e.png)


AmazonCloudWatch-ManageAgentにチェック > 以下の通り設定して「実行」を押下

- コマンドのパラメータセクション
    - Action:configure
    - Mode:ec2
    - Optional Configuration Source:ssm
    - Optional Configuration Location : 適用するパラメータストア上の設定ファイル名
    - Optional Restart:yes
- ターゲットセクション
    - ターゲット:監視対象のインスタンス

以上