Amazon Web Services ブログ
AWS App Runner プライベートサービスの発表
この記事は Announcing AWS App Runner Private Services (記事公開日 : 2022 年 11 月 1 日) の翻訳です。
今年の 2 月、私たちは App Runner の VPC サポートの一般提供を発表しました。この機能により、お客様の App Runner サービスは Amazon Virtual Private Cloud (Amazon VPC) でホストされているデータベースや他のアプリケーションと通信できるようになりました。そして、本日 App Runner プライベートサービスのリリースを発表します。これにより、お客様は Amazon VPC 内で App Runner サービスにプライベートアクセス可能となり、アプリケーションのセキュリティ体制を強化し、ネットワークのコンプライアンス要件を満たすことができます。この機能は、AWS PrivateLink インターフェイス VPC エンドポイントによって実現されます。お客様は、インターフェイス VPC エンドポイントを指定することで、どの Amazon VPC から App Runner サービスへのアクセスを許可するかを設定できます。
この記事では、プライベートな App Runner サービスを作成し、このサービスへのアクセスを制御して、特定の Amazon VPC にのみ公開する方法を紹介します。
本題に入る前に、App Runner のサービスに出入りするトラフィックのネットワークフローについて、いくつかの用語を説明します。
受信トラフィックは、トラフィックがサービスに流れ込む経路を指します。現在、これらの経路に使用できるオプションは次のとおりです。
- パブリックエンドポイント : サービスのエンドポイントは、パブリックインターネットからアクセスできます。
- プライベートエンドポイント : サービスのエンドポイントは、パブリックインターネットからはアクセスできず、定義した 1 つまたは複数の VPC にのみ公開されます。
送信トラフィックは、AWS が管理する App Runner Amazon VPC の外のデータにアクセスするために、トラフィックがサービスから出ていく際に使用する経路です。利用可能なオプションは次のとおりです。
- パブリックアクセス : すべてのアウトバウンドトラフィックは、App Runner が管理する Amazon VPC を通過します。
- カスタム VPC : すべてのアウトバウンドトラフィックは、指定した Amazon VPC を通過します。インターネットへのアクセスが必要な場合、この VPC には、NAT ゲートウェイを介したインターネットへの適切なルートが必要となります。
前提条件
- 以下のウォークスルーでは、App Runner を利用可能な任意のリージョンのデフォルト VPC を使用できます (アカウント内の既存の VPC も使用できます) 。ここでは、例としてバージニア北部 (us-east-1) リージョンを使用します。
ウォークスルー
新たにプライベートな App Runner サービスを作成するには、App Runner コンソールに移動して、サービスの作成を選択します。
ここでは、Amazon ECR Public Gallery にある hello-app-runner のコンテナイメージを使用します。
コンテナレジストリ、Amazon ECR パブリックの順で選択し、コンテナイメージの URI public.ecr.aws/aws-containers/hello-app-runner:latest
を入力します。
次へを選択します。
サービスの設定では、private-services-demo
という名前を付けて、1vCPU と 2GB のメモリを割り当てます。また、8000 番ポートを使用します。
さらに下にスクロールして、ネットワーキングのセクションで、サービスのトラフィックの受信、送信方法を設定します。プライベートサービスを構成するには、受信ネットワークトラフィックの下にあるプライベートエンドポイントを選択し、この接続に使用する VPC インターフェースエンドポイントを設定する必要があります。ここでは、初めてプライベートサービスを作成するので、新しいエンドポイントの作成をクリックします。
エンドポイントに appruner-private-service-endpoint
という名前をつけ、サービスへのアクセスを許可する VPC を選択し、このエンドポイントにアタッチするセキュリティグループを選択し、エンドポイントが展開される VPC のサブネットを選択します。その後、作成をクリックします。
VPC エンドポイントの作成には費用が発生します。詳細は AWS PrivateLink の料金ページ (https://aws.amazon.com/privatelink/pricing/) を参照ください。
このブログ記事では、送信ネットワークトラフィックの経路にパブリックアクセスを選択し、ページ下部の次へをクリックします。
設定を確認し、ページ下部の作成とデプロイをクリックします。
サービスがデプロイされたら、サービスの概要ページで詳細を見てみましょう。
サービスが受信トラフィック用にプライベートエンドポイントを使用するように設定されていることがわかります。また、プライベートエンドポイント接続ステータスは、サービスと VPC の接続状態を表します。サービスにアクセスするためのデフォルトドメイン (FQDN) も表示されます。私の環境では、hm4ugh79ye.us-east-1.awsapprunner.com
となっています。
サービスが VPC 内のリソースにのみ公開されていることを確認するために、 dig コマンドを実行して、サービスの FQDN を名前解決してみます。このクエリは、デプロイ時に選択した 3 つのサブネットにあるエンドポイントのプライベート IP アドレスに解決されることを確認できます。
このリリースでは、新たにネットワーキング設定ページも用意しています。ここでは、そのリージョンで使用されているすべての App Runner サービス用の VPC エンドポイントに関する情報を確認できます。
VPC エンドポイントの ID をクリックすると、詳細な情報 (どのサブネット、セキュリティグループが使用されているか、どのサービスがこのエンドポイントを使用しているか) を App Runner コンソールで簡単に確認できます。
サービスを再作成することなく、デプロイしたサービスを公開するように変更することも可能です。
コンソール内のサービス一覧から作成したサービスを選択し、設定タブを選択します。
サービスを設定のセクションにある編集ボタンをクリックします。
ネットワーキングのセクションで、パブリックエンドポイントに設定を変更します。下にスクロールして、変更を保存をクリックします。
サービスが更新されると、サービスの概要の情報が更新され、サービスがパブリックになり、VPC に接続されなくなったことが確認できます。
アプリケーションがパブリックインターネットからアクセス可能になったことを確認するために、先ほどと同じ dig コマンドを実行してサービスの FQDN を名前解決すると、パブリック IPv4 アドレスを使用していることを確認できます。
プライベートエンドポイントからパブリックエンドポイントにサービスを変更した場合、VPC エンドポイントは削除されませんので、VPC エンドポイントコンソールから削除する必要がある点にご注意ください。(訳注 : VPC エンドポイントは、App Runner コンソールのネットワーキング設定からも削除できます。)
後片付け
この記事で作成したリソースを、以下の手順で削除します。
private-services-demo
App Runner サービスを削除します。apprunner-private-service-endpoint
VPC エンドポイントを削除します。
まとめ
この記事では、アカウント内の特定の VPC からのみアクセスできるプライベートな App Runner サービスを作成する方法、パブリックエンドポイントとプライベートエンドポイント間でサービスを変更する方法、およびネットワーキング設定ページでサービスに関するすべてのネットワーク情報を確認する方法を紹介しました。
AWS App Runner は、本日より米国東部 (バージニア北部)、米国西部 (オレゴン)、米国東部 (オハイオ)、アジアパシフィック (東京)、欧州 (アイルランド) で利用可能です。App Runner は、AWS マネジメントコンソールと AWS Copilot CLI で使用できます。
AWS App Runner のロードマップは、https://github.com/aws/apprunner-roadmap/projects/1 で公開されています。ロードマップを調査、新しい機能を提案、優先してほしい機能に投票したりできますので、ぜひ確認してみてください。