[JAWS-UG CLI] CloudWatch Logs:#4 メトリックフィルタの削除

CLIを利用して、CloudWatch Logsのメトリックフィルタを削除してみます。

(ロググループを削除すると、一緒に削除されますが、メトリックフィルタを個別に削除するケースを想定した手順です。)

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


CloudWatch Logsへの権限
-----------------------

* 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
```


0.3. ロググループの指定
-----------------------

削除するメトリックフィルタが存在するロググループを指定します。

```bash:コマンド:
LOG_GROUP_NAME='<ロググループ名>'
```


0.4. ロググループの内容確認
---------------------------

削除するメトリックフィルタが存在するロググループの内容を確認します。

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

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


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


1.1. メトリックフィルタ名の指定
-------------------------------

削除するメトリックフィルタを指定します。

```bash:コマンド:
LOG_FILTER_NAME='<メトリックフィルタ名>'
```


1.2. メトリックフィルタの確認
-----------------------------

削除するメトリックフィルタの内容を確認します。

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

```json:結果(例):
      {
        "metricFilters": [
          {
              "filterName": "test-filter",
              "metricTransformations": [
                  {
                      "metricValue": "1",
                      "metricNamespace": "testNS",
                      "metricName": "testMetric"
                  }
              ],
              "creationTime": 1430103584640,
              "filterPattern": "Error"
          }
        ]
      }
```


2. メトリックフィルタの削除
===========================

メトリックフィルタを削除します。

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

        LOG_GROUP_NAME:     ${LOG_GROUP_NAME}
        LOG_FILTER_NAME:    ${LOG_FILTER_NAME}

ETX
```

```bash:コマンド:
aws logs delete-metric-filter \
        --log-group-name ${LOG_GROUP_NAME} \
        --filter-name ${LOG_FILTER_NAME}
```

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


3. 事後作業
===========


メトリックフィルタの不存在確認
------------------------------

削除したメトリックが存在しないことを確認します。

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

```json:結果(例):
      {
          "metricFilters": []
      }
```


完了
====

メトリックフィルタを削除したら、次はログストリームを削除してみます。
http://qiita.com/tcsh/items/1fe1d205796dfdf3561a