AWS CLIの振り返り ~CloudWatch Logs入門編~

#本記事の目的
JAWS-UG CLI オンラインハンズオンの復習として、ハンズオンで取り上げられたAWSサービスに関する用語と、使用したAWS CLI コマンドを箇条書きでまとめる。
今回はCloudWatch Logs入門編を取り上げる。

#主なAWSサービス用語
####ログイベント
モニタリングされているアプリケーションまたはリソースによって記録されるアクティビティのレコード。

####ログストリーム
同一のアプリケーションまたはリソースをモニタリング対象とする一連のログイベント。
####ロググループ
保持、監視、アクセス制御に関して同じ設定を共有するログストリームの集合体。

#主なAWS CLI コマンド一覧
####ロググループの作成
```
aws logs create-log-group \
  --log-group-name ${LOGS_GROUP_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--log-group-name|ロググループの名前|必須||

####ロググループの詳細表示
```
aws logs describe-log-groups \
  --log-group-name-prefix ${LOGS_GROUP_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--log-group-name-prefix|ロググループの名前|必須||

####ロググループの削除
```
aws logs delete-log-group \
  --log-group-name ${LOGS_GROUP_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--log-group-name|ロググループの名前|必須||

####ロググループの保持期間の追記
```
aws logs put-retention-policy \
  --log-group-name ${LOGS_GROUP_NAME} \
  --retention-in-days ${LOGS_RETENTION_DAYS}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--log-group-name|ロググループの名前|必須||
|--retention-in-days|ロググループの保持期間|必須||

####ロググループの保持期間の削除
```
$ aws logs delete-retention-policy \
  --log-group-name ${LOGS_GROUP_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--log-group-name|ロググループの名前|必須||

####ログストリームの作成
```
aws logs create-log-stream \
  --log-group-name ${LOGS_GROUP_NAME} \
  --log-stream-name ${LOGS_STREAM_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--log-group-name|ロググループの名前|必須||
|--log-stream-name|ログストリームの名前|必須||

####ログストリームの詳細表示
```
aws logs describe-log-streams \
  --log-group-name ${LOGS_GROUP_NAME} \
  --log-stream-name-prefix ${LOGS_STREAM_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--log-group-name|ロググループの名前|必須||
|--log-stream-name|ログストリームの名前|必須||

####ログストリームの削除
```
aws logs delete-log-stream \
  --log-group-name ${LOGS_GROUP_NAME} \
  --log-stream-name ${LOGS_STREAM_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--log-group-name|ロググループの名前|必須||
|--log-stream-name|ログストリームの名前|必須||

####ログイベントの作成/追加
```
aws logs put-log-events \
  --log-group-name ${LOGS_GROUP_NAME} \
  --log-stream-name ${LOGS_STREAM_NAME} \
  --log-events ${LOGS_EVENTS} \
  --sequence-token ${LOGS_UPLOAD_SEQUENCE_TOKEN}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--log-group-name|ロググループの名前|必須||
|--log-stream-name|ログストリームの名前|必須||
|--log-events|ログイベント文字列|必須|ログイベント文字列の例：`timestamp=1xxxxxxxxx000,message="event novice 1."`|
|--sequence-token|アップロードシーケンストークン|任意|ログイベントを最初に作成する場合、アップロードシーケンストークンの指定は必要ない。ログイベントを続けて追加する場合、追加先となるログストリームのアップロードシーケンストークンを指定する必要がある。アップロードシーケンストークンは、`aws logs describe-log-streams`コマンドで取得可能である。

####ログストリームに属するログイベントの一覧表示
```
aws logs get-log-events \
  --log-group-name ${LOGS_GROUP_NAME} \
  --log-stream-name ${LOGS_STREAM_NAME} \
  --limit ${LOGS_EVENT_MAX_ITEMS}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--log-group-name|ロググループの名前|必須||
|--log-stream-name|ログストリームの名前|必須||
|--limit|ログイベント最大表示数|任意||

####ロググループに属するログイベントの一覧表示
```
aws logs filter-log-events \
  --log-group-name ${LOGS_GROUP_NAME} \
  --limit ${LOGS_EVENT_MAX_ITEMS}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--log-group-name|ロググループの名前|必須||
|--limit|ログイベント最大表示数|任意||

#参考文献
- AWSCLIコマンドリファレンス:[CloudWatch Logs](https://docs.aws.amazon.com/cli/latest/reference/logs/index.html)
- JAWS-UG CLI専門支部：[ハンズオン(簡易版): CloudWatch Logs入門](http://prototype-handson-cli.s3-website-ap-northeast-1.amazonaws.com/handson_light-aws_service/handson_light-aws_service-logs-getting_started/index.html)