Lambdaのcloudwatch-alarm-to-slackで無料と思ってKMS暗号化キーを使ったら2円かかったので関数修正した

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にも通知が来るようになります。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.