AWSではないリソースに対して、CloudFrontを使う方法(レンタルサーバー編)
こんにちは、まるとです。
Amazon CloudFrontを使いたいけど、オリジンはAWS外のものを使いたい、そんなケースはありませんか?
今回は、レンタルサーバーをオリジンとした場合のCloudFrontを設定していきます。
構成図
まず、大まかに全体を掴めるよう以下に構成図を示します。

CloudFrontがAWS以外のリソースをオリジンとする場合、FQDN/ドメインの入力が必要となり、IPアドレスの直打ちができません。
そのため、レンタルサーバー側などオリジンとなるリソースにサブドメインなどを割り当てて、CloudFrontからアクセスできるようにします。
レンタルサーバー事業者にもよりますが、基本的にサブドメインに対してDNS AレコードなどでレンタルサーバーのIPを登録する形になります。
上記の図を例として、レンタルサーバーのIPがx.x.x.xとなる場合は、
rental.cloud.kapuverse.com A x.x.x.x
というDNSレコードを追加する形になります。(レンタルサーバー事業者によって設定が異なると思うので、詳しくは各事業者のドキュメントをご確認ください。)
料金について
最近、定額型のCloudFront料金プランが登場したため、定額か従量課金を選択する形となります。
従量課金の場合、以下の料金が発生してきます。
| 費用タイプ | 料金 | 備考 |
|---|---|---|
| レンタルサーバー → CloudFront の通信料金 | 0 USD | AWS宛の通信は無償 |
| CloudFront → インターネット の通信料金 | 段階制料金 | 最初の1TB/月が無料、以降有償 |
| リクエスト料金 | HTTP: 0.0090 USD/1万リクエスト HTTPS: 0.0120 USD/1万リクエスト |
最初の5000万リクエストは無料、料金は日本向けで計算 |
参考
従量課金を例として、一ヶ月あたり以下の条件で計算をしてみます。
- CloudFrontからの配信容量: 1.5TB
- 1ヶ月のリクエスト: 1億HTTPSリクエスト
この場合、無償利用枠を除くと、
- CloudFrontからの配信容量: 500GB
- 1ヶ月のリクエスト: 5000万HTTPSリクエスト
となり、CloudFront → インターネット の通信料金は1段階目(1TB〜9TB)が0.114 USD/GB、リクエスト料金は0.0120 USD/1万リクエストになるので、
0.114 (USD/GB) x 500 (GB) = 57 (USD)
0.0120 (USD/1万リクエスト) x 5000 = 60 (USD)
57 (USD) + 60 (USD) = 117 (USD)
となります。
もし、従量課金だと料金が読みにくい場合は、1ヶ月あたりのリクエスト数や配信容量などの制限を考慮しつつ、定額プランを使うのがCloudFrontの料金が読みやすくなるのではないかと思います。
設定方法・やってみる
前提条件
本手順を実施するにあたり、先ほどの図のようにレンタルサーバーへの通信はサブドメインなどでアクセスできるように設定がされていることを前提とします。
また、CloudFrontとレンタルサーバー(オリジン)間でHTTPS接続ができるように設定することが推奨です。

CloudFront側の設定(新規でディストリビューションを作成する場合)
新規でCloudFrontのディストリビューションを作成する場合は、料金プランの選択後、ディストリビューションの設定でCloudFrontに向けるドメインを入力します。

続いて、オリジンの設定でOrigin typeをOtherに設定、その後、Custom originでオリジンに向いているドメインを入力します。

あとは通常のCloudFrontの設定と同じように進めて、ディストリビューションを作成します。
ディストリビューションを作成したら、ディストリビューションドメイン名をお持ちのドメインに紐付けます。
なお、Route 53を利用している場合は、ディストリビューションの詳細ページ、一般タブにあるRoute domains to CloudFrontをクリックすれば簡単に設定できます。

CloudFront側の設定(既存のディストリビューションを利用する場合)
既存のCloudFront ディストリビューションを利用する場合は、オリジンを作成後、ビヘイビアに紐付けます。
ディストリビューションの詳細ページ、オリジンタブにあるオリジンを作成を選択します。

あとはOrigin domainにオリジンにアクセスするためのドメインを入力して、オリジンを作成を選択します。

次にビヘイビアに紐付けます。
既存のビヘイビアを利用するか、新規でビヘイビアを作成し。オリジンとオリジングループで先ほど作成したオリジンを選択すればOKです。

CloudFrontのドメインにアクセスしてみる
諸々設定が完了したら実際にCloudFrontのドメインにアクセスしてみます。


独自ドメインとデフォルトのCloudFrontディストリビューションドメイン名、両方でアクセスしてみましたが、無事にCloudFrontを経由してレンタルサーバーにアクセスができました。
終わりに
CloudFront+AWS外のリソースの組み合わせは、そこまで複雑な手順を踏むことなく実装できました。
要件上、WebサーバーをAWSに移行できない場合、この方法をご検討ください。
また、CloudFrontの定額プランもでてきたので、より気軽にCloudFrontの機能を試す観点でも有用なのではないかと思いました。
以上、まるとでした。






