ぶろとよ

ネットワーク系クラウドエンジニア(AWS)の技術ブログ。自動化に興味があるためAWS CLIを勉強&アウトプット中。

AWS CLI: CloudWatch Logs ロググループの作成

AWS CLI v2で、CloudWatch Logs の以下操作をするコマンドを記載しています。

  • ロググループの作成とタグ設定
  • ログ保持期間の設定
  • 後からタグだけを追加する
  • ロググループの削除
  • 大量のロググループを一気に作成する時のコマンド例

目次

検証環境

  • 検証日: 2022/04/18
  • PC環境:
    • Windows10 Home Ver21H1
      • PowerShell: Ver7.1.5
      • AWS CLI: aws-cli/2.1.34 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
        • -- profile default : 読み取り専用
        • -- profile aws_RW : 書き込み権限あり
          • ※ 誤操作防止のため、変更操作時のみ-- profileオプション付与。

注意事項

  • 本記事の内容はWindows PowerShellで検証しています。
  • AWS CLIはバージョン2を使用しています。
    • 本記事のコマンド出力でYAMLを使用してますが、これはバージョン2の機能です。
  • コマンド内の変数やパラメータやは検証で使用したものを記載しています。ご自身の環境に合わせ、書き換えて使用してください。
  • 個人で検証しているため実行結果に責任は持てません。必ずご自身でも検証してから使用してください。
  • ★特に注意したいことは赤字で記載★。


1. CloudWatch Logs ロググループ

1.1. ロググループの作成とタグ設定

AWS CLI v2マニュアル: create-log-group

# 変数の指定
${profile}  = "aws_RW"
${cwl_name} = "Test_loggroup"
${tag1} = "tag1-Contents"
${tag2} = "tag2-Contents"

# ロググループの作成とタグ設定
aws logs create-log-group `
    --profile ${profile} `
    --log-group-name ${cwl_name} `
    --tags "Name=${cwl_name}, `
        Tag1=${tag1}, `
        Tag2=${tag2}"


1.2. ログ保持期間の設定

ログ保持期間はロググループの作成と同時にできないため、後から別コマンドで設定します。

AWS CLI v2マニュアル: put-retention-policy

# 変数の指定
${profile}  = "aws_RW"
${cwl_name} = "Test_loggroup"
${retention_days} = "14"
    # 選択値: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, 3653

# ログの保持期間(Retention Policy)の設定
aws logs put-retention-policy `
    --profile ${profile} `
    --log-group-name ${cwl_name} `
    --retention-in-days ${retention_days}


1.3. 設定の確認

AWS CLI v2マニュアル: describe-log-groups

# すべてのロググループを表示する
aws logs describe-log-groups

# ロググループ名を指定して表示する
aws logs describe-log-groups --log-group-name-prefix ${cwl_name}


1.4. 後からタグだけを追加する

AWS CLI v2マニュアル: tag-log-group
AWS CLI v2マニュアル: list-tags-log-group

# 変数の指定
${profile}  = "aws_RW"
${cwl_name} = "Test_loggroup"
${tag3} = "tag3-Contents"

# タグ(Tag3)の追加
aws logs tag-log-group `
    --log-group-name ${cwl_name} `
    --tags "Tag3=${tag3}"

# 確認
aws logs list-tags-log-group --log-group-name ${cwl_name}


1.5. ロググループの削除

AWS CLI v2マニュアル:

# 変数の指定
${profile}  = "aws_RW"
${cwl_name} = "Test_loggroup"

# ロググループの削除
aws logs delete-log-group `
    --profile ${profile} `
    --log-group-name ${cwl_name}


2. 大量のロググループを一気に作成する時のコマンド例

# 変数の指定
${cwl_name_01} = "LogGroup01"
${cwl_name_02} = "LogGroup02"
${cwl_name_03} = "LogGroup03"
${cwl_name_04} = "LogGroup04"
${cwl_name_05} = "LogGroup05"

# ロググループの作成とNameタグの付与
${profile} = "aws_RW"
aws logs create-log-group --profile ${profile} --log-group-name ${cwl_name_01} --tags "Name=${cwl_name_01}"
aws logs create-log-group --profile ${profile} --log-group-name ${cwl_name_02} --tags "Name=${cwl_name_02}"
aws logs create-log-group --profile ${profile} --log-group-name ${cwl_name_03} --tags "Name=${cwl_name_03}"
aws logs create-log-group --profile ${profile} --log-group-name ${cwl_name_04} --tags "Name=${cwl_name_04}"
aws logs create-log-group --profile ${profile} --log-group-name ${cwl_name_05} --tags "Name=${cwl_name_05}"

# ログの保管期間(Retention)設定
${profile} = "aws_RW"
${retention_days} = "14"
aws logs put-retention-policy --profile ${profile} --log-group-name ${cwl_name_01} --retention-in-days ${retention_days}
aws logs put-retention-policy --profile ${profile} --log-group-name ${cwl_name_02} --retention-in-days ${retention_days}
aws logs put-retention-policy --profile ${profile} --log-group-name ${cwl_name_03} --retention-in-days ${retention_days}
aws logs put-retention-policy --profile ${profile} --log-group-name ${cwl_name_04} --retention-in-days ${retention_days}
aws logs put-retention-policy --profile ${profile} --log-group-name ${cwl_name_05} --retention-in-days ${retention_days}

# 作成後の確認
aws logs describe-log-groups --log-group-name-prefix ${cwl_name_01}
aws logs describe-log-groups --log-group-name-prefix ${cwl_name_02}
aws logs describe-log-groups --log-group-name-prefix ${cwl_name_03}
aws logs describe-log-groups --log-group-name-prefix ${cwl_name_04}
aws logs describe-log-groups --log-group-name-prefix ${cwl_name_05}