Amazon EC2 Systems Managerを使用してコマンド実行を実施する手順です。
試しに Systems Manager を使ってCloudWatch Logs エージェントをインストールしてみます。
内容としては初心者向けになっています。
事前準備
SSMエージェントのインストールは実施済みであること。
Amazon EC2 Simple Systems Manager (SSM) エージェントのインストール
AWS マネジメントコンソールからのコマンド実行
EC2の「SYSTEMS MANAGER SERVICE > コマンドの実行」より「コマンドを実行」を選択します。
今回はLinuxへのコマンド実行を行うので「AWS-RunShellScript」を選択します。
今回は1台のインスタンスのみを対象とするので「手動選択」で対象の1台のみ選択します。
「Commands」に実行したいコマンドを定義します。
今回はCloudWatch Logs エージェントのインストールと起動を実施します。
yum install -y awslogs
service awslogs start
「Working Directory」「Execution Timeout」は必要に応じて入力して下さい。
Execution Timeoutのデフォルトは3600(1時間)です。
「Run」を選択します。
コマンドの発行は成功したようなので「結果を表示」を選択します。
「ステータス」が成功(Success)になっていれば最後のコマンドの終了コードが0で返ってきています。
出力タブの「出力の表示」を選択しコマンドの実行結果を確認できます。
yum コマンドの実行結果が表示されています。
ただし「出力の表示」で出せるのは画面にも記載のある通り2500文字までなので出力結果が多い場合は、「コマンドを実行」の詳細オプションで「S3への書き込み」をチェックし設定します。
CloudWatch Logs に送信されたログデータの表示
CloudWatch に移動し「ログ」画面よりロググループを選択します。
ロググループ名は「awslogs.conf」の初期値が「/var/log/messages」になっています。
また、デフォルト値のリージョンが「us-east-1」になっているのでバージニア北部へ移動します。
/etc/awslogs/awscli.conf
[plugins]
cwlogs = cwlogs
[default]
region = us-east-1
/etc/awslogs/awslogs.conf
~ 省略 ~
[/var/log/messages]
datetime_format = %b %d %H:%M:%S
file = /var/log/messages
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /var/log/messages
ログストリーム名を選択します。
ログストリーム名は「awslogs.conf」の初期値がインスタンスのIDになっています。
対象のインスタンスの「/var/log/messages」が表示されます。
CloudWatch Logs エージェントをインストールしたタイミングより前のログも取得できています。
ログの取得までは成功です。
上手く行かない場合
ポリシー設定の不足の可能性
対象インスタンスに割り当てているIAMロールにて「インラインポリシー」を設定します。
カスタムポリシーを選択します。
「ポリシー名」「ポリシードキュメント」を設定し「ポリシーの適用」を選択します。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html