【AWS】CLIでCloudWatch Logsを取得・フィルタする方法を徹底解説!初心者向けAWS CLIログ確認ガイド
生徒
「AWSのCloudWatch Logsって、AWS CLIから確認できますか?コンソールを開かずにログを取得したいです。」
先生
「はい、できます。AWS CLIを使えば、CloudWatch Logsのロググループ一覧取得やログイベントの取得、フィルタ検索までコマンド一つで実行できます。」
生徒
「エラーだけ抽出したり、特定の文字列で検索することもできますか?」
先生
「できます。filter-log-eventsコマンドを使えば、CloudWatch Logsをキーワードでフィルタできます。これから順番に解説していきましょう。」
1. CloudWatch Logsとは何か
Amazon CloudWatch Logsは、AWSの各種サービスやEC2、Lambdaなどのログを収集し、一元管理できるログ管理サービスです。アプリケーションログ、システムログ、エラーログを保存し、トラブルシュートや監視に活用できます。
AWS CLIを使えば、ブラウザのAWSマネジメントコンソールを開かなくても、ターミナルからCloudWatch Logsを取得できます。特にLinux環境やサーバー運用現場では、CLIでのログ確認は非常に重要です。
本記事では、AWS CLIでCloudWatch Logsを取得する方法、ロググループの確認方法、ログストリームの取得方法、ログイベントのフィルタ方法まで初心者向けに丁寧に解説します。
2. AWS CLIの事前準備と確認
まずはAWS CLIがインストールされているか確認します。以下のコマンドでバージョンを確認できます。
aws --version
aws-cli/2.15.0 Python/3.11 Linux/5.15 exe/x86_64
次に、AWS CLIの設定が完了しているか確認します。未設定の場合はaws configureでアクセスキーやリージョンを設定してください。
aws configure
AWS Access Key ID [None]: AKIAxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json
CloudWatch Logsを操作するためには、IAMユーザーにlogsの権限が付与されている必要があります。権限不足の場合は、IAMポリシーを確認してください。
3. ロググループ一覧を取得する方法
CloudWatch Logsでは、まずロググループを確認します。ロググループはアプリケーション単位やサービス単位で分かれています。
aws logs describe-log-groups
{
"logGroups": [
{
"logGroupName": "/aws/lambda/sample-function",
"storedBytes": 10240
}
]
}
特定のロググループ名で絞り込みたい場合は、prefixオプションを使います。
aws logs describe-log-groups --log-group-name-prefix /aws/lambda
{
"logGroups": [
{
"logGroupName": "/aws/lambda/sample-function"
}
]
}
これにより、AWS CLIでCloudWatch Logsのロググループ一覧取得が可能になります。
4. ログストリームを取得する方法
ロググループの中には複数のログストリームがあります。ログストリームは実行単位やインスタンス単位で分かれています。
aws logs describe-log-streams --log-group-name /aws/lambda/sample-function
{
"logStreams": [
{
"logStreamName": "2026/02/22/[$LATEST]abcdef123456"
}
]
}
最新のログストリームを取得したい場合は、order-byオプションとdescendingオプションを利用します。
aws logs describe-log-streams --log-group-name /aws/lambda/sample-function --order-by LastEventTime --descending
{
"logStreams": [
{
"logStreamName": "2026/02/22/[$LATEST]abcdef123456"
}
]
}
5. ログイベントを取得する方法
特定のログストリームからログイベントを取得するにはget-log-eventsコマンドを使用します。これによりCloudWatch Logsの内容をCLIで確認できます。
aws logs get-log-events \
--log-group-name /aws/lambda/sample-function \
--log-stream-name 2026/02/22/[$LATEST]abcdef123456
{
"events": [
{
"message": "START RequestId: xxxx"
},
{
"message": "END RequestId: xxxx"
}
]
}
これでAWS CLIを使ったCloudWatch Logsのログ取得が可能です。サーバーのエラーログ確認やバッチ処理の実行結果確認に役立ちます。
6. filter-log-eventsでログをフィルタする方法
大量のログから特定のキーワードだけを抽出したい場合は、filter-log-eventsを使います。CloudWatch Logsのフィルタ検索は、障害調査やエラー解析に非常に便利です。
aws logs filter-log-events \
--log-group-name /aws/lambda/sample-function \
--filter-pattern "ERROR"
{
"events": [
{
"message": "ERROR Exception occurred"
}
]
}
特定期間で絞り込みたい場合はstart-timeやend-timeを指定します。時間はミリ秒で指定します。
aws logs filter-log-events \
--log-group-name /aws/lambda/sample-function \
--start-time 1708560000000 \
--end-time 1708563600000
{
"events": []
}
これにより、AWS CLIでCloudWatch Logsを期間指定で取得し、キーワードフィルタをかけることができます。
7. よくあるトラブルと対処法
CloudWatch LogsをAWS CLIで取得できない場合、まず確認するべきはIAM権限です。logsDescribeLogGroupsやlogsFilterLogEventsなどの権限が不足している可能性があります。
次に確認するのはリージョン設定です。ログが存在するリージョンとAWS CLIの設定リージョンが一致していないと、ログが表示されません。
また、ログがまだ出力されていない場合もあります。LambdaやEC2の動作状況も合わせて確認しましょう。AWS CLIとCloudWatch Logsを組み合わせることで、迅速なログ解析とトラブルシューティングが可能になります。
まとめ
今回は、AWS CLIを使ってCloudWatch Logsを取得する方法から、ロググループ一覧の確認、ログストリームの取得、ログイベントの確認、さらにfilter log eventsによるキーワード検索や期間指定フィルタまでを体系的に学びました。Amazon CloudWatch Logsは、AWS環境におけるログ管理の中核となるサービスであり、EC2やLambda、各種アプリケーションのログを一元管理できる重要な仕組みです。
AWSマネジメントコンソールを使わずに、ターミナル上でCloudWatch Logsを確認できることは、Linuxサーバー運用や本番環境でのトラブルシュートにおいて非常に大きな武器になります。特に、aws logs describe log groupsやaws logs describe log streams、aws logs get log events、aws logs filter log eventsといった基本コマンドを理解しておくことで、ログ確認作業の効率は大きく向上します。
ロググループを確認し、対象のログストリームを特定し、その中から必要なログイベントを取得するという流れは、CloudWatch Logsを扱う上での基本手順です。さらに、filter log eventsを使ってERRORなどのキーワードでフィルタリングすれば、大量のログの中から問題箇所だけを素早く抽出できます。これは障害対応やエラー解析、パフォーマンス調査において欠かせない操作です。
また、start timeやend timeを指定した期間絞り込みは、特定時間帯に発生した不具合を調査する際にとても有効です。AWS CLIとCloudWatch Logsを組み合わせることで、ログ取得、ログ検索、ログ分析をコマンドベースで柔軟に実行できます。サーバー管理者やインフラエンジニアだけでなく、アプリケーション開発者にとっても必須のスキルといえるでしょう。
IAM権限やリージョン設定の確認も重要なポイントでした。CloudWatch Logsが取得できない場合は、logs関連の権限不足やリージョンの不一致が原因であることが多いため、aws configureの設定やIAMポリシーを必ず確認しましょう。これらを理解しておくことで、AWS CLIによるCloudWatch Logs操作で迷うことがなくなります。
サンプルプログラムでAWS CLIを実行する例
ここでは、JavaからAWS CLIコマンドを実行してCloudWatch Logsを取得する簡単なサンプルを紹介します。ProcessBuilderを利用することで、Javaアプリケーション内からCLIを呼び出すことが可能です。
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class CloudWatchLogsCliExample {
public static void main(String[] args) throws Exception {
ProcessBuilder builder = new ProcessBuilder(
"aws",
"logs",
"describe-log-groups"
);
Process process = builder.start();
BufferedReader reader =
new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
process.waitFor();
}
}
上記のJavaコードを実行すると、AWS CLI経由でCloudWatch Logsのロググループ一覧が標準出力に表示されます。JavaとAWS CLIを組み合わせることで、ログ監視ツールや自動レポート生成などにも応用できます。
{
"logGroups": [
{
"logGroupName": "/aws/lambda/sample-function"
}
]
}
このように、AWS CLIとCloudWatch Logsの基本コマンドを理解し、さらにプログラムと組み合わせることで、ログ管理の自動化や効率化が実現できます。AWS環境での運用において、CloudWatch Logs取得方法やフィルタ検索の知識は必ず役に立ちます。
生徒
今日はAWS CLIでCloudWatch Logsを取得する方法を学びました。ロググループの確認からログストリームの取得、get log eventsやfilter log eventsの使い方まで理解できた気がします。
先生
とても良いですね。CloudWatch LogsはAWS運用の基本です。AWS CLIを使えば、コンソールを開かなくてもログ確認やログ検索ができます。
生徒
特にfilter log eventsでERRORを抽出できるのが便利だと思いました。障害対応のときにすぐ原因を見つけられそうです。
先生
その通りです。期間指定やキーワード検索を組み合わせれば、より正確なログ分析ができます。IAM権限やリージョン設定も忘れずに確認しましょう。
生徒
AWS CLIとCloudWatch Logsをしっかり使いこなせるように、実際の環境でもコマンドを試してみます。
先生
ぜひ実践してください。ログ取得、ログ確認、ログフィルタの基本を押さえておけば、AWS環境でのトラブルシューティング力が大きく向上します。