CloudWatch Logs にテストデータを送信する方法2パターン(CLI/マネジメントコンソール)

AWS CLI でも マネジメントコンソールでもテストデータを送信できます
2020.07.20

コンサル部@大阪オフィスのYui(@MayForBlue)です。

今回はCloudWatch Logs にテストデータ(ログイベント)を送信する方法を、マネジメントコンソールを使う場合と AWS CLI を使う場合の2パターンご紹介します。

前提条件

  • ロググループ、ログストリームが作成されていること

Cloud Watch Logs は階層の概念があり、ログイベントの保存のためにはロググループ、ログイベントの作成が必須となります。

ログイベントを保存するために、ロググループと、その中に一つ以上のログストリームを作成してください。
ログストリームは、対象のロググループの詳細画面の「ログストリームを作成」をクリックしてログストリーム名を入力することで作成できます。

テスト用のログイベントを送信する

マネジメントコンソールの場合

CloudWatch Logs のダッシュボードから対象のロググループを選択し、ログストリームのタブから対象のログストリームを選択します。

ログイベントの一覧が表示されるので、「アクション」をクリックして「Create log event」をクリックします。

テスト用に送信したいメッセージを入力し、「作成」をクリックします。

画面を再読み込みすると、実際にログが送信・保存されていることが確認できます。
タイムスタンプは作成時のものが自動で適用されます。

AWS CLI の場合

AWS CLI の場合は、aws log put-log-eventsのコマンドを使用します。
以下が必須の引数となります。

  • --log-group-name ロググループ名
  • --log-stream-name ログストリーム名
  • --log-events ログイベント内容

ログイベントはタイムスタンプとメッセージ内容を記述する必要があり、以下の2パターンの書き方があります。

  • timestamp=long,message=string
  • JSON形式(下記が例)
[
  {
    "timestamp": long,
    "message": "string"
  }
  ...
]

実際にやってみる

ログイベントをtimestamp=long,message=stringで記述する方法でやってみます。

CloudWatch Logs に送信するタイムスタンプは13桁のUNIX時間(1970年1月1日00:00:00 UTCからのミリ秒数)である必要があるため、以下のnodeコマンドで取得したタイムスタンプを使用しました。

node -e 'console.log(Date.now())'

テスト用のログイベントを送信します。

aws logs put-log-events --log-group-name test-log-group --log-stream-name test-log-stream --log-events timestamp=$(node -e 'console.log(Date.now())'),message="test log message from AWS CLI"

AWS CLI からpushした内容でログが保存されていることが確認できました。

補足として、こちらの方法では一度ログを送信すると、以下のようにトークンが発行されます。

aws logs put-log-events --log-group-name test-log-group --log-stream-name test-log-stream --log-events timestamp=$(node -e 'console.log(Date.now())'),message="test log message from AWS CLI"
{
    "nextSequenceToken": "496089438006708123456789123456789123456789"
}

二回目以降 AWS CLI からログを送信する場合は、--sequence-tokenの引数にこのトークンを含める必要があります。

このコマンドの公式ドキュメントは以下となります。
put-log-events

また、以下のブログでも使い方が解説されているので、こちらも読んでみてください。

さいごに

CloudWatch Logs にテストデータを送信する方法 をまとめてみました。
この記事がどなたかのお役に立てば幸いです。

以上、コンサル部@大阪オフィスのYui(@MayForBlue)でしたっ(`・ω・´)