0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ひろ亭Advent Calendar 2021

Day 9

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

Posted at

9日目です!

8日目の最後で「セキュリティ設定」の見直しをするとお伝えしましたが、1点、気がついたことがあります!

なんと、アクセスログが取れていません(涙)

たしかに2日目でアクセスログの設定を入れましたが、これは、あくまでも S3 バケットに対するアクセスを記録するログの設定でした。

現在の構成はどうなっていたでしょうか。

そうですね、 CloudFront が前面に出ています。

つまり、現在、 S3 のログにでてくるのは、 CloudFront からのオブジェクト取得アクセス(とその他、AWSからのポーリングだったり、自分でオブジェクトを操作した際など)のみなんですね。

ということで、 CloudFront 側にもアクセスログの設定を入れます。

今回も、 get-distribution-config コマンドと update-distribution コマンドでの操作になります。

9日目の要約

CloudFront に対するアクセスログをとるようにするよ!

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

概要

CloudFront の設定を変更して、アクセスログを S3 バケットに格納するよ

さあ、やってみよう!

CloudFront の設定変更を準備する

やはり、基本的には、6日目で実施したものと似た内容です。

  1. cloudfront get-distribution-config コマンドで現状の設定を取得する
  2. ETag の値を確認する
  3. 取得した json ファイルに対して、設定変更を加える
  4. cloudfront update-distribution コマンドを実行して更新する

この記事では、3と4についてのみ記載します。1と2の実施内容については、6日目の記事をご確認ください。

取得した json ファイルに対して設定変更を加える

以下の Logging があることを確認します。

  "Logging": {
    "Enabled": false,
    "IncludeCookies": false,
    "Bucket": "",
    "Prefix": ""
  },

以下を参考に書き換えます。

"Logging": {
    "Enabled": true,
    "IncludeCookies": false,
    "Bucket": "<ログ格納用バケット>.s3.amazonaws.com",
    "Prefix": "cloudfront"
  },

cloudfront update-distribution コマンドを実行して更新する

準備ができたら、6日目と同様に cloudfront update-distribution コマンドを実行して、設定変更を行います。

aws cloudfront update-distribution --id <CloudFront Distribution ID> ¥
--cli-input-json file://distribution_error.json ¥
--if-match 確認したETag の値

コマンド実行に成功すると、Distribution の内容が記された json が返されます。
やはり長いので割愛します。

動作確認

curl コマンドを実行して独自ドメインのアドレス(CloudFront)に対してアクセスします。

curl https://<ドメイン名>/

その後、ログ用の S3 バケットにログが配信されるまでしばし待ちます。

概ねアクセスから30〜40分程度経過するとログファイルが配信されます。
実際には1時間〜4時間程度かかることもあるようです。

s3 ls コマンドを実行してログファイルの有無を確認します。

aws s3 ls s3://<バケットファイル名>

以下のように表示されます。

                   PRE /
                   PRE cloudfront/

さらに確認します。

aws s3 ls s3://<バケットファイル名>/cloudfront/

以下のように gz 形式で圧縮されたログファイルが格納されるようになりました。

2021-12-08 16:46:00        901 *********.2021-12-08-16.********.gz

ファイルを解凍するとテキストファイルが出てきます。ログの形式は、こちらの開発者ガイドの通りです。

まとめ

これで CloudFront にアクセスがあった際のログが保存されるようになりました。
ログ形式にあるとおり、クライアントのIPアドレスが記録されているので、もしものときの調査に使ったり、アクセス解析などにつかったりができるようになります。

  • 今回使ったコマンド
  • (cloudfront get-distribution-config)
  • cloudfront update-distribution
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?