
cloudfrontを最小限の構成で使う
EC2
最小構成でいいのでhttpとかhttpsとかを許可しつつ起動。パブリックIPを割り当ててsshを起動し、apacheでもnginxでもなんでもいいからwebサーバーを起動する。ここではapache2をinstall。
cloudfront
ここからが本稿のキモである。まずcloudfrontのダッシュボードに移動する。
ディストリビュージョンを作成

ここでディストリビュージョンなどというまたよくわからんワードが飛び出してきたが、とりあえず作成する。
オリジンドメインを作成する

Enter a valid DNS domain name for your origin, such as an S3 bucket or HTTP server.
などとなっており、ドロップダウンからしか挿入できなそうなように見えて実はここにEC2のDNS名を挿入できる。
EC2に戻ってパブリック IPv4 DNS をコピー

ドメインオリジンにこれを入力

プロトコルはHTTPのみにする

あとこの辺はずっとdefault

WAFはまた取り上げるのでとりあえずここでは保護しない


HTTP3を付けてもいいかもしれないけどまあこのまんま

実はログりたいんだけどまあこれも後回しにしよう。これで「ティストリビュージョンを作成」
作成した後
最終変更日がデプロイになっている段階ではまだ使えない。しばらく放置する。まあ実際にはある程度時間経つとデプロインの状態でも繋がるけどね

そうすると、このようにディストリビュージョンドメインというのがあるからそこにアクセスする

すると、EC2で設定しておいたwebページが出てくる。ここではdebian defaultが表示されているが。

ポイントとしてはhttpのみで設定したapache2がcloudfrontを通すとhttpでアクセスできているという点だ。cloudfrontをhttpでアクセスしてみると

このように通信できる。これはhttpを許可しない設定にすると防ぐこともできる。
サーバーのアクセスログ
これはcloudfrontを経由してくるため、全てAWSのipアドレスになるが、apacheならmod_remoteipなどを使うとうまいこといくと思う。
このチュートリアルで学べたこと
1. EC2の最小構成
2. CloudFrontディストリビューションの作成
ディストリビューションの設定: EC2のDNS名をオリジンドメインとして指定し、CloudFront経由でEC2にアクセスする方法を学ぶ。
設定のポイント: 基本的にほとんどの設定はデフォルトで進められ、HTTPのみの設定でCloudFrontを通してEC2上のWebページにアクセスできる。
3. CloudFrontの動作
ディストリビューションのドメイン: ディストリビューションのドメインを通して、EC2上のWebページが表示される。
4. HTTPとCloudFront
HTTPでのアクセス: CloudFrontでHTTPのみを許可した場合、EC2にhttp経由で接続できる。逆に、設定を変更してHTTPを無効にすることで、セキュリティを高めることも可能。
5. サーバーのアクセスログ
アクセス元のIPアドレス: CloudFront経由でアクセスするため、ApacheなどのWebサーバーのログにはAWSのIPアドレスが表示される。mod_remoteipを使用することで、正確なクライアントIPを取得できる。
6. CloudFrontの簡単な操作
WAFやログの設定: WAFやログ機能を後で設定することで、さらに細かい制御や監視が可能だが、基本的にはデフォルト設定で十分に動作することが多い。
次回以降
cloudfrontのキャッシュ方面への理解を進めていってもいいんだけどセキュリティー方面の理解をすすめていくことにする