LoginSignup
0
0

More than 1 year has passed since last update.

AWS CLIで Web サイトを構築、管理、運用する(4日目)

Last updated at Posted at 2021-12-04

3日目では、更新作業後の公開設定の簡略化を目的としたバケットポリシーについてお伝えしました。
4日目は、2日目で設定したログファイルのリテンションを設定し、無尽蔵にログファイルが増え続けないようにします。

4日目の要約

ログファイルが無尽蔵に増えないようにするよ!

AWS CLI の準備

このあたりをみて、好きなバージョンとお使いのOSにあった環境設定をしてくださいね。
なんなら、 AWS CloudShell で実行するのも楽でよいと思います。
この記事シリーズは、AWS CloudShell で実行し、実行例を載せています。

バージョン1
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv1.html

バージョン2
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2.html

概要

ライフサイクルを設定して一定期間が過ぎたログファイルを削除する。

さあ、やってみよう!

ログファイルを収集し始めたはよいが、その後どうするかを考える際の用件というのは多々あります。

  • 30日過ぎたら、アクセス頻度が低くなるので安い階層に移す?
  • 業界基準でン年は保存しておかないとならない?
  • 常にセキュリティ監視のためにいじらない?

このあたりを自動的にやってくれるのが、ライフサイクル設定です。

ライフサイクルを設定する

ライフサイクルのルール(設定)は JSON 形式で指定します。3日目にお伝えした通り、AWS CLI は JSON ファイルを読み込むことができるので、ルールを記述した JSON ファイルを先に作成しておくと作業がしやすいです。

ライフサイクルルールのファイルを作成する

このルールは、ログファイルが格納されたら30日後に削除されるものです。
必要に応じて期間を長くしたり、階層(Glacerに移行など)設定などを盛り込むとよいでしょう。

lifecycle.json
{
    "Rules": [
        {
            "Filter": {
                "Prefix": "/"
            },
            "Status": "Enabled",
            "Expiration": {
                "Days": 30
            },
            "ID": "logfile"
        }
    ]
}

コマンドを実行する

s3api put-bucket-lifecycle-configuration コマンドでライフサイクルを設定します。

aws s3api put-bucket-lifecycle-configuration --bucket <LogsBUCKETNAME> --lifecycle-configuration file://lifecycle.json

このコマンドも正常終了しても特に何も返しません。

念のため、 s3api get-bucket-lifecycle-configuration コマンドで設定が入っていることを確認します。

aws s3api get-bucket-lifecycle-configuration --bucket <LogsBUCKETNAME>

ライフサイクル設定がなされていると、以下の様に JSON 形式で設定内容が出力されます。順序が前後しているかもしれませんが、同等の内容が出力されます。

{
    "Rules": [
        {
            "Expiration": {
                "Days": 30
            },
            "ID": "logfile",
            "Filter": {
                "Prefix": "/"
            },
            "Status": "Enabled"
        }
    ]
}

また、このライフサイクル設定が入っていると、ログファイル(オブジェクト)に有効期限日時が設定されます。
この有効期限日時を過ぎると、ライフサイクルで設定された動作を行います(この例であれば削除される)。

この有効期限日時は、s3api head-object コマンドで確認できます。

aws s3api head-object --bucket <LogsBUCKETNAME> --key <OBJECTNAME/LogFile>

有効期限日時が設定されていると、Expiration に日時が設定されています。

{
    "AcceptRanges": "bytes",
    "Expiration": "expiry-date=\"Wed, 30 Dec 2021 00:00:00 GMT\", rule-id=\"logfile\"",
    "LastModified": "2021-11-29T05:12:48+00:00",
    "ContentLength": 4551,
    "ETag": "\"*******************************\"",
    "ContentType": "text/plain",
    "Metadata": {}
}

削除動作はこの日時が過ぎ去るまで待つか、試用として、有効期限を1日程度にしてみて確認するのもよいでしょう。

まとめ

S3 で配信している Web サイトへのアクセスログを無尽蔵に増やすことなく一定期間保持できるようになりました。ログだけではなく、IoT のセンシングデータを一定期間保持して削除するなどといった使い方もできますね。

しかし、まだまだWeb サイトの構築や管理、運用については問題や課題がありますよね。
引き続き見ていきます。

  • 今回使ったコマンド
    • s3api put-bucket-lifecycle-configuration
    • s3api get-bucket-lifecycle-configuration
    • s3api head-object
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0