2022 年 App Runner のアップデートを振り返る~VPC Connector~
はじめに
これはAWS App Runner Advent Calendar 2022 1 日目の記事です。このあとも App Runner の記事が目白押しなので楽しみにしていてください。
App Runner VPC Connector
この記事では 2022 年の App Runner に関連したアップデートの中でもインパクトの大きかった[1] VPC Connector について紹介します。
AWS App Runner とは
AWS 上でコンテナ化されたアプリケーションを簡単に構築・運営できるフルマネージドサービスです。以下のスライドにあるようにオーケストレーションワークフローや CI/CD の整備を App Runner に任せて、利用者はアプリケーション開発に集中することができます。
ソースコードかコンテナイメージを用意するだけでアプリケーションをクラウドにデプロイできるので、ベストプラクティスに基づいた出来合いのインフラでいいからクラウド上にアプリケーションを展開したい場合におすすめのサービスです。
パブリックネットワーキングモード
インフラ部分は AWS に任せることができるといっても気になる部分はあると思います。監視部分やスケーリングが気になる方もいらっしゃると思いますが、アプリ開発という意味では特にネットワークが気になる方が多いのではないでしょうか。ここでは App Runner が GA した直後のネットワーク構成であるパブリックネットワーキングモードを詳しく見ていきます。
公式ブログより
このネットワーキングモードの場合はアプリケーションコンテナは App Runner サービスが管理する VPC 内部の ENI を通って pull されます。インバウンドのトラフィックは同じく App Runner VPC 内部の NLB、ENI を経由して最終的にアプリケーションコンテナに到達します。アウトバウンドトラフィックは App Runner VPC 内部の ENI、NAT Gateway、Internet Gateway を通ってインターネットに出ていきます。
ここまでの説明を読むとわかるようにパブリックネットワーキングモードでは お客様の VPC は登場しません。 そしてアウトバウンドトラフィックはインターネットから出て行くので、アプリケーションコンテナからアクセスできるのはインターネット経由で疎通できるサービスに限られます。つまり S3 や DynamoDB には( IAM の設定は別途必要ですが)インターネット経由で通信できるのでアクセスできる一方で、お客様の VPC 内部のプライベートサブネットにあるリソース( Aurora データベースや ElastiCache クラスター、internal ALB 背後の API サーバー群など)にアクセスすることはできませんでした。これが 2022/02/07 までの話です。
VPC サポート
2022/02/08 に App Runner は VPC アクセスをサポートしました。これによってサポートされる VPC ネットワーキングモードがどのようなネットワーク構成なのかをみてみましょう。
公式ブログより
コンテナイメージの pull が App Runner VPC にある ENI 経由なのと、インバウンドのトラフィックが ENI に到達するまではパブリックネットワーキングモードと同じです。違うのはここからで、アウトバウンドのトラフィックは AWS Hyperplane を用いて Fargate ENI からお客様の VPC 内部の ENI へルーティングされます。あとはお客様の VPC 内部のルーティングの話になるので、ルートテーブルで定義した通りにプライベートサブネットにあるリソースにアクセスできますし、NAT Gateway などが用意されていればインターネットに出ることも可能です。これによってセキュリティグループなどの今までと同じ仕組みを使いながら、App Runner にデプロイしたアプリケーションからも Aurora, ElastiCache などのプライベートリソースにアクセスできます。バックエンドが Aurora の Rails アプリケーションをデプロイする場合などに有用だと思います。
注意点
VPC ネットワーキングモードの注意点をいくつかまとめておきます。
- VPC ネットワーキングモードであってもお客様のアプリケーションがお客様の VPC 内部で動く わけではありません。アプリケーションが動くのは AWS が管理している領域であり、VPC ネットワーキングモードだからといって例えば ECS クラスターを用意するみたいなことは必要ありません。もちろんアプリケーションからアクセスする先の VPC を用意する必要はあります。
- VPC ネットワーキングモードを使う場合インターネットにアクセスする場合は NAT Gateway や Internet Gateway が必要になります。パブリックネットワーキングモードの場合は App Runner サービスが管理している VPC にこれらのリソースがあるのでお客様側で用意する必要はありませんでした。一方 VPC ネットワーキングモードの場合アウトバウンドのトラフィックは全てお客様の VPC に行ってしまうので、そこからインターネットに出ていこうと思った時にルートテーブルの設定をしたり NAT Gateway などのリソースを作成する必要が出てきます。
おわりに
アドベントカレンダーの初日ということで App Runner のサービスアップデートの中でも特に反響が多かった VPC ネットワーキングモードを取り上げました。他にも嬉しいアップデートがいくつかあったので別の日に取り上げていきます。
-
App Runner のロードマップは GitHub で公開されていて、VPC 内部のリソースにアクセスしたいというのは 一番最初の issue でした。 ↩︎
Discussion