CloudWatchアラーム通知をSlackにするのIAMのKMSで暗号キーでWebhookURLを暗号化でKMSキーを使ったのですが、これが実は無料じゃなかった。
AWS Key Management Service の料金
キー
AWS Key Management Service で作成したそれぞれのお客様のマスターキー (CMK) は、KMS により生成されたキーマテリアルで使用するか、インポートしたキーマテリアルで使用するかに関わりなく、それが削除されるまで、1 USD/月の料金がかかります。KMS により生成されたキーマテリアルの CMK の場合で、CMK が毎年自動的にローテーションするように設定されている場合は、新しくローテーションされたバージョンに 1 USD/月の CMK コストが発生します。AWS KMS では、以前の各バージョンの CMK を保持および管理して、古いデータを確実に復号できるようにしています。以下について、料金が請求されることはありません。
・AWS 管理の CMK。サポートされている AWS のサービス内のリソースを最初に暗号化しようとすると、お客様に代わって自動的に作成されます。
・削除を予定された CMK。待機期間中に削除をキャンセルした場合、その CMK は削除を予定されなかったものとして請求されます。
・GenerateDataKey および GenerateDataKeyWithoutPlaintext API リクエストによって作成されたデータキー。これらの API リクエストを直接行うか、またはユーザーに代わって統合された AWS のサービスによって行うかに応じて、以下で説明される使用料金ごとに、これらの API リクエストに対して課金されます。AWS KMS で保存または管理されない限り、データキー自体に対して月間利用料金が課金されることはありません。
つまり、自身で作成したキーに料金が発生するようです。
よく読めよってな話ですね。
ちなみにLambda関数は以下のように修正しました。
l.51
const hookUrl = process.env.hookUrl;
l.120
exports.handler = (event, context, callback) => {
if (hookUrl) {
// Container reuse, simply process the event with the key in memory
processEvent(event, callback);
} else {
callback('Hook URL has not been set.');
}
};
環境変数は取得したWebHookURLをそのまま設定する感じ。
「hookUrl」:「https://hooks.slack.com/services/*********」
これで無料枠でslackにも通知が来るようになります。