🤗

2022 年 App Runner のアップデートを振り返る~プライベートサービス~

2022/12/15に公開約3,400字

はじめに

これはAWS App Runner Advent Calendar 2022 15 日目の記事です。このあとも App Runner の記事が目白押しなので楽しみにしていてください。

App Runner プライベートサービス

この記事では 2022 年の App Runner に関連したアップデートの中でも比較的最近かつ反響の大きかった[1]プライベートサービスの紹介をします。

AWS App Runner とは

AWS 上でコンテナ化されたアプリケーションを簡単に構築・運営できるフルマネージドサービスです。以下のスライドにあるようにオーケストレーションワークフローや CI/CD の整備を App Runner に任せて、利用者はアプリケーション開発に集中することができます。
https://speakerdeck.com/mats16/introduction-to-aws-app-runner?slide=12

ソースコードかコンテナイメージを用意するだけでアプリケーションをクラウドにデプロイできるので、ベストプラクティスに基づいた出来合いのインフラでいいからクラウド上にアプリケーションを展開したい場合におすすめのサービスです。

プライベートサービス

プライベートサービスが発表される前の App Runner はアプリケーションに入ってくるトラフィックをインターネット全体から受け付けていました。


公式ブログより

この図を見るとわかるようにアプリケーションへのリクエストはインターネット越しに NLB を通って各コンテナにルーティングされます。またこの NLB 部分にアクセス制限を設定することができないので、例えば社用アプリケーションを App Runner にデプロイして会社のネットワーク IP レンジのみにアクセスを絞るといったことが難しかったです(アプリケーション側でリクエストの中身を見て制御することは可能)。


公式ブログより

今回のプライベートサービスだと上の図のように App Runner サービスへのアクセスをお客様の VPC からのみに制限することができます。お客様の VPC 内部に VPC endpoint が作成されて、その VPC endpoint からのみ App Runner にアクセスできる(インターネット経由ではアクセスできない)ようにすることができます。

こちらのプライベートサービスは以前紹介した VPC Connectorとは別物で独立して設定することができます。

App Runner ネットワーク構成パターン(2022/12/15時点)

現在 App Runner のネットワーク構成は 1. リクエストが入ってくるトラフィック( incoming traffic )をインターネット経由にするか VPC のみに絞るか 2. アプリケーションから出ていくトラフィック( outgoing traffic )をインターネット経由にするか VPC に流すか、で 2 × 2 = 4 通りあります。まとめると以下の表のようになります。

incoming traffic outgoing traffic トラフィックの流れ
インターネット経由 インターネット経由 インターネットからアクセスし、インターネット経由でレスポンスを返す(1)
インターネット経由 お客様の VPC 経由 インターネットからアクセスし、お客様の VPC にトラフィックが流れていく(2)
お客様の VPC からに限定 インターネット経由 お客様の VPC からのみアクセスでき、インターネット経由でレスポンスを返す(3)
お客様の VPC からに限定 お客様の VPC 経由 お客様の VPC からのみアクセスでき、お客様の VPC にトラフィックが流れていく(4)

それぞれの用途を考えると以下のようなものが考えられるでしょう。これはあくまで一例なのでこの中にないユースケースにも柔軟に対応できるのではないかと思います。

  1. インターネットからアクセスし、インターネット経由でレスポンスを返す
    • インターネットからアクセスするのでどこからでもアクセスできてもいいようなアプリケーション
    • S3 や DynamoDB などのインターネット経由でアクセスできるサービスにデータを永続化
  2. インターネットからアクセスし、お客様の VPC にトラフィックが流れていく
    • インターネットからアクセスするのでどこからでもアクセスできてもいいようなアプリケーション
    • お客様の VPC にトラフィックが流れていくので、RDS や ElastiCache にデータを保存できる
    • インターネットに出ていく場合はお客様の VPC 内部からインターネットへのルートを準備する必要がある
  3. お客様の VPC からのみアクセスでき、インターネット経由でレスポンスを返す
    • お客様の VPC からのみアクセスされるマイクロサービスの1つのようなアプリケーション
    • S3 や DynamoDB などのインターネット経由でアクセスできるサービスにデータを永続化
  4. お客様の VPC からのみアクセスでき、お客様の VPC にトラフィックが流れていく
    • お客様の VPC からのみアクセスされるマイクロサービスの1つのようなアプリケーション
    • RDS や Aurora や ElastiCache などの VPC 内部のサービスにデータを保存できる

おわりに

App Runner プライベートサービスの登場によりネットワーク構成の柔軟性が高まりました。VPC からのみにアクセスを制限したいアプリケーションのデプロイ先の1つの選択肢として App Runner も考慮に入れてみてもいいかなと思います。

脚注
  1. App Runner のロードマップは GitHub で公開されていて、プライベートサービスは 二番目の issue でした。この機能が紹介されたときのブログはこちらでネットワークについて Dive Deep したブログはこちらなので合わせてご覧ください。 ↩︎

Discussion

ログインするとコメントできます