- LocalStackを用いたAmazon CloudWatch Logsのロググループ作成方法などをメモする。
LocalStack 準備
- こちらの手順でDocker LocalStack環境を準備しておく。
ロググループ作成方法
- AWS CLIを使用し、ロググループを作成する。
1. ロググループを作成する
- ロググループtest-log-groupを作成する。
$ aws logs create-log-group --log-group-name test-log-group --endpoint-url=http://localhost:4566 --profile localstack
2. ログストリームを作成する
- ロググループtest-log-groupにログストリームtest-log-streamを作成する。
$ aws logs create-log-stream --log-group-name test-log-group --log-stream-name test-log-stream --endpoint-url=http://localhost:4566 --profile localstack
3. ログイベントをPUTする
初回PUT時
- ログストリームtest-log-streamにログイベントをPUTする
$ aws logs put-log-events --log-group-name test-log-group --log-stream-name test-log-stream --log-events timestamp=1635589048,message='LOG EVENTS 1' --endpoint-url=http://localhost:4566 --profile localstack
2回目以降のPUT時
- トークンを取得してから、ログイベントをPUTする。
$ TOKEN=$(aws logs describe-log-streams --log-group-name test-log-group --query 'logStreams[].uploadSequenceToken' --endpoint-url=http://localhost:4566 --profile localstack --output text)
$ aws logs put-log-events \
        --log-group-name test-log-group \
        --log-stream-name test-log-stream \
        --log-events timestamp=1635589048,message='LOG EVENTS 2' \
        --sequence-token ${TOKEN} --endpoint-url=http://localhost:4566 --profile localstack
4. ログイベントを確認する
$ aws logs get-log-events --log-group-name test-log-group --log-stream-name test-log-stream --endpoint-url=http://localhost:4566 --profile localstack
{
    "events": [
        {
            "timestamp": 1635589048,
            "message": "LOG EVENTS 1",
            "ingestionTime": 1635591467580
        },
        {
            "timestamp": 1635589048,
            "message": "LOG EVENTS 2",
            "ingestionTime": 1635591480764
        }
    ],
    "nextForwardToken": "f/00000000000000000000000000000000000000000000000000000001",
    "nextBackwardToken": "b/00000000000000000000000000000000000000000000000000000000"
}
