[JAWS-UG CLI] CloudWatch Logs:#1 ロググループの作成

AWS CLIを利用して、CloudWatch Logsのロググループを作成してみます。


前提条件
========


CloudWatchLogsへの権限
----------------------

* CloudWatch Logsに対してフル権限があること。


AWS CLIのバージョン
-------------------

* 以下のバージョンで動作確認済

  * AWS CLI 1.7.24

```bash:コマンド:
aws --version
```

```text:結果(例):
      aws-cli/1.7.24 Python/2.7.5 Darwin/13.4.0
```


0. 準備
=======


0.1. リージョンの決定
---------------------

作成するロググループのリージョンを決めます。

(カレントユーザが利用するカレントリージョンも切り変わります。)

```bash:コマンド(東京リージョンの場合):
export AWS_DEFAULT_REGION='ap-northeast-1'
```


0.2. 変数の確認
---------------

プロファイルとリージョンが想定のものになっていることを確認します。

```bash:変数の確認:
aws configure list
```

```text:結果(例):
            Name                    Value             Type    Location
            ----                    -----             ----    --------
         profile cloudwatchFull-prjZ-mbp13             env    AWS_DEFAULT_PROFILE
      access_key     ****************LOAQ shared-credentials-file
      secret_key     ****************I1O1 shared-credentials-file
          region           ap-northeast-1              env    AWS_DEFAULT_REGION
```


1. 事前作業
===========


1.1. ロググループ名の決定
-------------------------

ロググループ名を決めます。
CloudWatch Logsでは、各種エンティティをprefixで指定するので、prefixを適宜決めておくのがオススメです。

ここでは、prefixを"test/"とします。

```bash:コマンド:
LOG_GROUP_NAME='test/sample'
```


1.2. 同名のロググループ名の不存在確認
-------------------------------------

同名のロググループが存在しないことを確認します。


```bash:コマンド:
aws logs describe-log-groups \
        --log-group-name-prefix ${LOG_GROUP_NAME}
```

```json:結果:
      {
          "logGroups": []
      }
```


1.3. ログ保持期間の決定
-----------------------

ログの保持期間を決めます。
指定しない場合、無期限に保存されます。

```bash:コマンド(10年保存の場合):
LOG_RETENTION_DAYS='3653'
```


2. ロググループの作成
======================


2.1. ロググループの作成
-----------------------

ロググループを作成します。

```bash:変数の確認:
cat << ETX

        LOG_GROUP_NAME ${LOG_GROUP_NAME}

ETX
```

```bash:コマンド:
aws logs create-log-group \
        --log-group-name ${LOG_GROUP_NAME}
```

```text:結果:
      (戻り値なし)
```


2.2. ロググループの確認
-----------------------

作成したロググループを確認します。

```bash:コマンド:
aws logs describe-log-groups \
        --log-group-name-prefix ${LOG_GROUP_NAME}
```

```json:結果(例):
      {
        "logGroups": [
          {
              "arn": "arn:aws:logs:ap-northeast-1:XXXXXXXXXXXX:log-group:test/sample:*",
              "creationTime": 1430092395471,
              "metricFilterCount": 0,
              "logGroupName": "test/sample",
              "storedBytes": 0
          }
        ]
      }
```


3. ログ保持期間の設定
======================


3.1. ログ保持期間設定の確認
----------------------------

```bash:コマンド:
LOG_RETENT_DAYS=`aws logs describe-log-groups --log-group-name-prefix ${LOG_GROUP_NAME} --query 'logGroups[].retentionInDays' --output text` \
  && echo ${LOG_RETENT_DAYS}
```

```text:結果:
      (戻り値なし)
```


3.2. 保持期間の設定
-------------------

```bash:変数の確認:
cat << ETX

          LOG_GROUP_NAME:     ${LOG_GROUP_NAME}
          LOG_RETENTION_DAYS: ${LOG_RETENTION_DAYS}

ETX
```

```bash:コマンド:
aws logs put-retention-policy \
        --log-group-name ${LOG_GROUP_NAME} \
        --retention-in-days ${LOG_RETENTION_DAYS}
```

```text:結果:
      (戻り値なし)
```


3.3. ログ保持期間設定の確認
----------------------------

設定したログ保持期間を確認します。

```bash:コマンド:
LOG_RETENT_DAYS=`aws logs describe-log-groups --log-group-name-prefix ${LOG_GROUP_NAME} --query 'logGroups[].retentionInDays' --output text` \
  && echo ${LOG_RETENT_DAYS}
```

```text:結果:
3653
```


完了
====

ロググループを作成したら、次はログストリームを作成してみます。
http://qiita.com/tcsh/items/8650180e0e2c15647c3c