たそらぼ

日頃思ったこととかメモとか。

CloudWatchアラームのアラーム名を日本語にすると、SNSの通知メールがおかしくなる

CloudWatchアラームのアラーム名を日本語にすると、SNSの通知メールがおかしくなる件について調査しました。

背景

システム監視でCloudWatchアラームを使い、問題があった時にSNS経由でアラートメールを飛ばしています。
基本的に英語でメールしていますが、あるとき運用メンバーの要望で、通知する文面が日本語になるよう、CloudWatchアラームのアラーム名と説明を変えたところ、文字化けしたような変なメールが届いたことがありました。

Webで調べたところ、意外と同じ問題に関する記事がなかったので、自分で調べてみました。

結論

CloudWatchアラームのアラーム名:英語のみ
CloudWatchアラームのアラームの説明:日本語もいけそう

ただ、結局アラームの説明に関する制限の記載は明記がなかったので、本当に日本語OKかは運用してみてになりそうです。

調べた情報

まず、CloudWatchのアラーム名ですが、 ASCII 文字のみを使用するという制限がありました。

アラーム名には ASCII 文字のみを使用する必要があります。

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html

CloudWatchのアラーム名は、SNSの件名になります。SNSの件名の制限を調べてみると、こちらもASCIIのみでした。
これは、各SNSトピック > [メッセージの発行] > [件名]から分かります。

f:id:tasotasoso:20200405151540p:plain
SNSメール件名の制限


一方、Body部にはマルチバイトが使えそうです。

ASCII エンコーディングを使用するメッセージには、最大 140 文字を含めることができます。UCS-2 エンコーディングを使用するメッセージには、最大 70 文字を含めることができます。

https://aws.amazon.com/jp/sns/faqs/

こちらは少し昔の記事になりますが、Body部にはUnicodeが使えることが書いてあり、もともとこういう仕様になっていたことが分かります。

SubjectはASCII文字列にしてください。Body部は8KBまでのUTF-8文字列を設定できます。

Amazon SNS による通知サービス | Developers.IO

以上から、アラート名は英語、説明を日本語にすることで、日本人メンバーにも優しいアラートメールが発行できそうです。