概要

CloudFrontからVPC内部のELBやEC2をパブリックからアクセス制限されるオリジンに指定できるようになりました。 CloudFront経由でインターネットからアクセスを一部許可しつつ内部からのアクセスも受け入れられる構成を探していたので早速試してみたいです。

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

いくつか制約はあるようです。 インターネットゲートウェイをVPC内に設置し、IPv4が使えるプライベートサブネットがある必要があるようですが、今回は問題なさそうです。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-vpc-origins.html

構成

プライベートネット上にEC2インスタンスを起動しhttpdをインストールしてinternalなALBからアクセスするようにしました。 VPC Originを作成するとENIやセキュリティグループが自動作成されました。

VPC OriginsからVPC内のロードバランサを指定できました。 httpdは80番しか開けていないのでHTTPのみにしました。

ディストリビューションからVPC Originを指定します。

VPC Origin作成時に自動でセキュリティグループが作成されたため、 ALBのインバウンドルールでCloudFrontを許可しました。 内部からALBへのアクセスもできるか確認したいためCloudShellからのセキュリティグループも許可しました。

デプロイ後、グローバルから確認できました。

VPC環境のCloudShellからAWSに向けて疎通もできました。 これでVPC経由についても疎通できそうです。

[cloudshell-user@ip-10-0-0-31 ~]$ curl internal-alb-xxxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com
<html><body><h1>hello!</h1></body></html>

内部と外部から両方で疎通する場合、 リバースプロキシを設定したり、NLBやALBを組み合わせる必要がありましたが新しい構成案として検討したいです。