PowershellでAWS CLIを打って地味にミスった書き方など
ダブルクォートのネスト(入れ子)をエスケープしてなかった
CISベンチマーク項目でCloudTrailにてAPI呼び出しの証跡を得て、CloudWatchで許可されていない不正なAPI呼び出しのアラートを作る際、aws logs put-metric-filter コマンドでメトリクスフィルタをつくるとき
エラー文章の抜粋
Unknown options: *UnauthorizedOperation) || ($.errorCode = AccessDenied*)}
以下がコマンドの中にありまして
--filter-pattern "{($.errorCode = "*UnauthorizedOperation") || ($.errorCode = "AccessDenied*")}"
“(ダブルクォート)の中の”(ダブルクォート)のエスケープをしていませんでした。
こいつのエスケープは、バッククオートで以下の様になります。Gutenbergのコードブロックでバッククォートを複数記載できなかったので画像ですが・・・。
CloudWatchのロググループ名をARNにしてしまっていた
aws logs put-metric-filter コマンドでCloudWatchでメトリクスフィルタをつくるとき、以下の様にコマンドしてしまった・・・
aws logs put-metric-filter --log-group-name arn:aws:logs:リージョン:AWSアカウント番号:log-group:ロググループ名
エラー文章の抜粋
An error occurred (InvalidParameterException) when calling the PutMetricFilter operation: 1 validation error detected: Value 'arn:aws:logs:リージョン:AWSアカウント番号:log-group:ロググループ名' at 'logGroupName' failed to satisfy constraint: Member must satisfy regular expression pattern: [\.\-_/#A-Za-z0-9]+
使えない文字が入ってる!って怒られてます。正しくは、
aws logs put-metric-filter --log-group-name /var/log/messages
の様にロググループ名だけでいい。
ハイフォンを抜かしていた事件
CloudWatch LogsメトリクスフィルタとSNSトピックに関連付けられているCloudWatchアラームを作成するコマンド
aws cloudwatch put-metric-alarm --alarm-name
が正しいけど
aws cloudwatch put-metric-alarm --alarmname
になり、
Unknown options: --metricname,
と怒られた。