AlexaスキルでCloudWatch Logsの課金が気になった時に見る覚書

Alexaスキルを自前のAWSアカウントで運用している場合、CloudWatch Logsで課金が発生していることが結構あります。 なぜCloudWatch Logs? Lambdaの実行ログが記録されるのがこのサービス […]

広告ここから
広告ここまで

目次

    Alexaスキルを自前のAWSアカウントで運用している場合、CloudWatch Logsで課金が発生していることが結構あります。

    なぜCloudWatch Logs?

    Lambdaの実行ログが記録されるのがこのサービスです。

    ユーザー側で操作設定をしなくても、Lambda関数を実行した時に自動的に記録するためのLog Groupを作成してくれます。便利ですね。

    ですが、このLambda実行時に自動生成されるLog Groupがなかなか曲者だったりします。

    Lambda実行時に作られるLog Groupは無期限保存

    サーバーを触ったことがあると、「ログを一定期間で削除してディスク容量を圧迫しないようにする」ようなタスクを経験されると思います。それのAWS版だと思ってもらえればわかりやすいかもしれません。

    CloudWatch LogsのLog Groupの場合、保持期限を設定しておけば勝手に期限切れのログデータを削除してくれます。が、Lambdaが自動生成する場合、保持期限が設定されないため、無期限にログデータを持つことになります。

    そしてCloudWatch Logsは使用量に応じた従量課金制で、その対象にはログのデータ量も含まれます。つまり放っておくと課金対象がどんどん増えていきます。

    GB単位課金なので大事故にはなりにくい

    とはいえ無料枠が5GB用意されており、保存しているログデータに対する課金も超過1GBあたり0.03USD(3円程度)です。

    なのでスキルを大量に公開しているか、超人気スキルを複数公開しているなどでなければ目が飛び出るような金額の請求がここから発生することは考えにくいです。

    とはいえ無期限保持のままだと、月日が立つごとにデータ量が増え続けます。「塵も積もれば山となる」とも言いますので、やはり保持期限は設定しておきましょう。

    個人情報が含まれる恐れも

    また、ログを無期限に保持することには個人情報の取り扱いからも問題となり得ます。

    スキルのリクエスト内容やスキル内で呼び出しているAPIのレスポンスなどを記録している場合、多少の個人情報がログに残る可能性もあります。

    GDPRを筆頭に個人情報保護に関してはこれから厳格になる可能性が高く、不用意にデータを持ち続けることはあまり推奨しません。

    課金の面でも、個人情報の取り扱いの面でも、CloudWatch LogsのLogGroupは一定期間で削除する設定にしましょう。

    Log Groupの保持期限変更について

    Qiitaのこのあたりの記事を見ながらBashやPythonなどで操作するのが手早いかなと思います。

    追記:2020/05/19

    ASK CLIの次のリリース(V2.7.1以降)でセットアップした場合のCloudFormationテンプレートにCloudWatch LogsのLogGroupが追加される予定です。

    該当PR: https://github.com/alexa/ask-cli/pull/199

    これがリリースされると、以降ask newでCloudFormationを利用したスキルをセットアップした場合に限りCloudWatch Logsのログ有効期限がデフォルトで14日となり、カスタマイズも容易になります。

    ASK CDKもASK CLIもPull Requestに対するレスポンスがかなり早く、また丁寧な反応をもらえます。

    「ん?」と思うことがあれば、是非積極的にPull Requestを出していきましょう 🙂

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark