[アップデート] Amazon CloudFront の VPC オリジンのクロスアカウントがサポートされました
いわさです。
Amazon CloudFront には VPC オリジンという機能があり、プライベート VPC 内のオリジンに CloudFront ディストリビューション経由であればアクセスさせることが出来できます。
この VPC オリジン機能ですが、これまでは CloudFront ディストリビューションと同一アカウント上で VPC オリジンを構成する必要がありました。
VPC オリジンがリリースされた当初から VPC オリジンのクロスアカウントサポートは提供予定だとはされていたのですが、1 年近くサポートされていない状態でした。
CloudFrontディストリビューションとVPCオリジンのクロスアカウントのサポートも、AWSブログの発表で、まもなく提供予定とされています。[1]
これが今朝のアップデートでついにサポートされるようになりました。
使い方の流れとしては VPC オリジン作成後に RAM を使ってクロアアカウントで共有することで、共有先の CloudFront ディストリビューションで使えるようになるという感じです。
今回実際に使ってみたので紹介します。
共有元での VPC オリジンの共有
まずはオリジン提供側の AWS アカウントで準備を行います。
手順は割愛しますが事前にアカウント内で利用可能な VPC オリジンとオリジンリソースは用意しておきます。詳しくは冒頭でも紹介したこちらの亮さんのブログも参考にしてください。インターネットゲートウェイあたりがちょっと混乱すると思います。
VPC オリジンのデプロイが完了ステータスになると、次の「Share VPC origin」が選択できるようになっているはずです。

ここで VPC オリジンの共有設定を行います。
この共有には RAM(Resource Access Manager)の仕組みを使いますので、作成済みのリソース共有を選択するか、あるいはこの画面で作成もできます。
以下は既存のリソース共有を選択する場合です。

以下は新規でリソース共有まで作成する場合です。プリンシパルタイプには外部 AWS アカウントも指定できますし、OU などの選択も可能です。

VPC オリジンの共有設定がされると、VPC オリジン詳細画面では次のように Shared with タブに共有設定の情報が表示されるようになります。

なお、RAM のリソース共有はバージニア北部リージョンに作成されます。共有先アカウントでもリージョンを少し意識する必要があるので RAM のリージョンはバージニア北部になる点を覚えておきましょう。

共有先で使う
では共有先で CloudFront ディストリビューションを作成してみましょう。
まず、この時点ではまだオリジンの選択肢の共有された VPC オリジンは表示されません。

共有元から共有設定をしただけだと共有先でリソース共有が使える状態になっていないためです。
共有先アカウントで RAM コンソールにアクセスし、バージニア北部リージョンで保留中のリソース共有を承認しましょう。


リソース共有が承認された後は、次のように VPC オリジンの選択肢に表示されると思います。無事に選択することが出来ました。

ここで一点注意事項があります。
共有 VPC オリジンを使う場合は、同一アカウント内の VPC オリジンを使う場合と異なり、VPC オリジンのエンドポイントの入力が必要になります。

同一アカウントの場合はここは自動で入力される部分です。事前に共有元アカウントから情報を取得しておきましょう。
VPC オリジンエンドポイントには、EC2 あるいは ELBV のプライベート DNS 名などを入力します。

これでディストリビューションが作成されます。
さいごに共有元アカウントの VPC オリジン画面を見てみると、次のように外部アカウントのディストリビューションに関連付けされていることが確認できると思います。

さいごに
本日は Amazon CloudFront の VPC オリジンのクロスアカウントがサポートされたので使ってみました。
CloudFront を個別のアカウントに切り出すアーキテクチャパターンもあるので、今回のアップデートを待っていた方もいるのではと思います。ぜひ使ってみてkづあさい。
なお、共有 VPC オリジン自体の使用は無料ですが、ディストリビューションのトラフィック使用料は通常と変わらずにディストリビューション所有アカウントに請求されます。どちらのアカウントに請求が発生するのかも意識しておくと良いですね。
There are no extra charges for sharing VPC origins with other AWS accounts. The usage costs of traffic for a distribution that is using a shared VPC origin will go to the consuming account that owns the distribution.[2]






