VPCオリジンを使用してプライベートサブネットに配置した内部向けALBからコンテンツを配信しよう

はじめに

昨年、Amazon CloudFront VPC オリジン が実装されたことにより、プライベートサブネットに配置された内部向けALBからもコンテンツを配信することが可能になりました。

https://aws.amazon.com/jp/blogs/news/introducing-amazon-cloudfront-vpc-origins-enhanced-security-and-streamlined-operations-for-your-applications/

つまり、従来はこうだったものが

こうすることができるようになり

構成図です

よりセキュアな構成を実現できるようになったということですね!追加コストがかからないというのも魅力的です。

調べていくうちに、今更ですが使ってみたくなったので、以降に手順をまとめてみたいと思います。

VPC オリジンの作り方についてはリンクを貼らせていただいた上記公式ブログが何よりわかりやすいので、こちらの記事ではそれ以降の設定と実際ちゃんとみられるのか?についてを紹介できればと思います。

ディストリビューション設定

今回は前段で載せた構成図の通り、プライベートサブネットに配置した内部向けALB を指定して VPCオリジンを作成し、その配下にある EC2 へアクセスをしてみたいと思います。

ウキウキで VPCオリジンを作成しても、ディストリビューションに紐づけなければきちんと働いてくれません。
さっそく CloudFront のコンソール画面左にある「ディストリビューション」から右上の「ディストリビューションを作成」を選択してください。

「Origin domain」として、作成した VPCオリジンを選択します。これ以降の設定は任意で問題ありません。

必要事項を入力したら画面下部にある「ディストリビューションを作成」を選択してください。

数分待つと、ディストリビューションのデプロイが完了します。

セキュリティグループ設定

こちらの構成では、リソースのセキュリティグループに「VPCオリジン」を含める必要があります。
今回の場合では、ALBのセキュリティグループのインバウンドルールにVPCオリジンを追加します。

画像ではインバウンドルールが複数ある状態ですが、本来であれば「VPCオリジンのみ」等アクセス元を絞った方がより安全です。

動作確認

「ディストリビューションドメイン名」にブラウザからアクセスをすると、無事に内部ALB 配下にある EC2 へアクセスすることができます。

表示された画面がこちらです。

うまくいかない場合

ディストリビューションドメインへアクセスしてみた結果、4xxもしくは5xxなのですが…という場合は以下を確認してみてください。

  • セキュリティグループ
    • VPCエンドポイントや EC2 のセキュリティグループで適切な許可が設定されているかを確認してください。各種リソースの疎通が行えないとエラーが返ってきます。
  • ターゲットグループのヘルスチェック
    • ターゲットグループがヘルスチェックに失敗している場合、オリジンと接続ができないために CLoudFront がエラーを返します。一例ですがEC2の/var/www/httpd配下にindex.htmlを作るなどしてヘルスチェックを正常にしてから再度試してみてください。

まとめ

昨年度追加されたサービスを今更ながら使ってみました。いままでは「ALBはパブリックに置く!なぜなら!そうしないとインターネットからアクセスができないから!」という考え方が主流でしたが、プライベートサブネットにも問題なく配置ができるようになったことにより、もっと構築の幅が広がると思います。
最後まで目を通していただいてありがとうございました。

投稿者プロフィール

omi
AWS の諸々について、初学者目線から書いていけたらいいなと思っています!