[AWS]CloudwatchエージェントをRunCommandのみでインストールする

# 概要
CloudWatchエージェントをEC2インスタンスにインストールする時に毎回忘れる(主にコマンドドキュメント名)ので、自分用の備忘録として記事にしておきます。
要するに、SSM(SystemsManager)のRunCommandを用いて設定する内容です。
また、RunCommandの前提となる[SSMエージェントのインストール](https://docs.aws.amazon.com/systems-manager/latest/userguide/getting-started-agent.html)や[IAMポリシーの設定](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)は割愛しました。
上記、公式ドキュメントを参照してください。


# エージェントインストール
まずは、CloudWatchエージェントのインストールです。

1. マネジメントコンソールの[Systems Manager](https://console.aws.amazon.com/systems-manager/)にアクセス

2. 左メニューより[Run Command]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/57ae25dc-6e00-c0e7-cf58-4e0d50d9a4aa.png)

3. 右メイン画面内の[Run Command]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/2897d011-a00a-1730-10d9-40e64876352b.png)

4. Command documentにて[AWS-ConfigureAWSPackage]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/98553354-7f31-16c3-2f75-4a36cb1c96f3.png)

5. 中段のCommand parametersのNameにて[AmazonCloudWatchAgent]と入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/1f98ac4e-666a-7855-9ea8-aa3bddd65faa.png)

6. インストール先のEC2インスタンスを好きな手段で選択
「特定のタグが付与されたEC2インスタンスにインストール方法」「手動で選択する方法」「リソースグループから選択する方法」から選択できる。[^1]
ここでは、手動で選択する例を表示している。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/6902ec57-0156-5dcf-34d9-990e47b1b837.png)

7. 以降はオプション
デフォルトでは結果をS3に出力しようとするが、マネジメントコンソールからそのまま確認することもできるため、今回の用途であればオフでも可。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/47b0aca9-0aad-b30c-8234-b4afc7d19950.png)

8. 最下部[Run]によって実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/f181c208-1d80-6f8e-3d4c-a91b4e0716c4.png)

9. ステータスを確認する
結果がFaildの時は、Instance ID列の対象インスタンスID名をクリックすると、コマンドの詳細が表示されるので、原因究明に役立つ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/a0a60aef-4ad1-b674-98aa-c8421837294b.png)

# エージェントに設定投入
1. インストール手順の1～3を実行し、RunCommandの画面を表示
2. Command documentにて[AmazonCloudWatch-ManageAgent]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/d12aa7ac-eb0a-f758-6946-7c630bc528fc.png)

3. インストールするエージェント設定をOptional Configuration Locationに入力[^2]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/127cf373-434a-96cb-9c66-2a6aa6553270.png)

4. インストール手順の6～8を実行し、同様にコマンドを実行する

# よくある失敗
以下、私が経験したよくある失敗パターンを掲載します。

- 対象のEC2インスタンスに、IAMポリシー(AmazonSSMManagedInstanceCore)が付与されていない。設定方法は[公式ドキュメント](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)参照
- 対象のEC2インスタンスに、SSMエージェントがインストールされていない。設定方法は[公式ドキュメント](https://docs.aws.amazon.com/systems-manager/latest/userguide/getting-started-agent.html)参照
- セキュリティグループ等で、HTTPSのアウトバウンド通信が阻害されている
- その他[前提条件](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-prereqs.html)を満たしていない。

# 履歴機能
RunCommandには履歴機能があります。以前は完全に同じコマンド(同じ対象先、同じオプション)でしか実行できずあまり意味がなかったのですが、
少し前から[Copy to new]機能が実装されてめちゃめちゃ便利になりました。

1. [Run Command]画面のここから履歴機能を表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/f6c78a43-9e55-b008-2c15-c44d229efcf6.png)

2. 再利用したい過去のコマンドを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/e3dbd2ec-c8a3-1270-02ca-b9080b990618.png)

3. 右上のメニューより[Copy to New]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358513/3dfe0342-16c2-eae5-c049-f951d70d4730.png)

4. 2で選択した過去のコマンドの設定が最初から入力された状態でコマンドの詳細画面に遷移する[^3]

[^1]: ここで選択できるEC2インスタンスは、RunCommandの前提条件を満たしたものしか表示されない。「よくある失敗」を参照
[^2]: ここで設定できるのは、パラメータストアにあらかじめ登録した内容か、デフォルト設定のみ。パラメータストアへの設定の登録方法は[公式ドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html)参照
[^3]: 完全に過去と同じ設定になるため、すでに存在しないEC2インスタンスであっても選択済みになっている。この場合、自分で操作して対象外にしないとエラーになる。