Amazon Web Services ブログ

AWS App Runner のご紹介

この記事は Introducing AWS App Runner を翻訳したものです。

本日、 AWS 上でコンテナ化された Web アプリケーションをビルド、および実行するための最も簡単な方法である、 AWS App Runner を発表できることを嬉しく思います。 App Runner はコンテナネイティブのフルマネージドサービスです。オーケストレーターの設定、ビルドパイプラインの準備、ロードバランサーの調整、 TLS 証明書のローテートなどは必要ありません。そしてもちろん、管理すべきサーバもありません。

App Runner はアプリケーション実行時間に対する秒単位での課金と、セキュアなプロダクションワークロードを実行するために必要な全てを提供します。たった数クリックで、パブリックなエンドポイントと検証済みの TLS 証明書、そしてオートスケーリングが設定されたコンテナを実行することができます。

App Runner では、App Runner では、既存のコンテナを利用するか、コードリポジトリから直接アプリケーションをデプロイすることが可能です。コードリポジトリから直接デプロイする場合、App Runner を GitHub リポジトリと接続し、git push することでコードの変更が自動的にデプロイされます。また、コンテナのビルドプロセスをより細かく制御したいケースのために、App Runner は最新バージョンの AWS Copilot と連携します。Copilot を使うことで App Runner にデプロイするコンテナのビルドや Amazon DynamoDB のプロビジョニングを自動化出来ます。

App Runner のいくつかのユニークなメリットと開始方法を紹介するため、サービスを作成してみましょう。

最初のコンテナをデプロイしましょう

サンプルコンテナを App Runner にデプロイする方法を見ていきましょう。このチュートリアルのため、事前にビルドしたコンテナをこちらに公開しています。このアプリケーションは、基本的なランディングページとサービスごとにユニークなバナー生成機能を提供します。

App Runner のコンソールからコンテナをデプロイするために必要な情報はたったの 3 つです。まずは Container registry タイプを指定します。この例では、プロバイダーとして Amazon ECR Public を指定しています。そして、コンテナイメージには public.ecr.aws/aws-containers/hello-app-runner:latest を指定します。

次に、サービスに任意の名前を指定し、ポートに 8000 を指定します。また必要に応じて、環境変数やヘルスチェックのエンドポイント、スケーリングの要件、サービスのタグなど、アプリケーションに追加設定を加えることができます。この例では、デフォルトの設定で進めます。

Create & Deploy をクリックすると、アプリケーションは TLS 証明書がセットされた AWS が管理するロードバランサー配下にデプロイされます。また、オートスケーリングは同時リクエスト数に基づいています。各 App Runner サービスは、コンテナの CloudWatch メトリクスとログを提供します。 AWS がインフラストラクチャを管理するため、開発者はアプリケーション開発に注力することができます。

コンテナビルドの自動化

コンテナをビルド、プッシュすることなく App Runner サービスにコードを反映したい場合は、 GitHub リポジトリを直接利用することができます。このビルドサービスは Python や Node.js のようなランタイム用のベースコンテナを提供するため、セキュリティパッチなどの考慮を少なくできます。 App Runner には、 App Runner 上で動くコンテナの全てのニーズを満たす、分単位の課金で利用できる統合されたコンテナビルド機能があります。

オープンソースで GitHub 上にホストされているアプリケーションを例にあげます。このアプリケーションはバナー画像を生成するためにディスクの一次領域を利用し、またサービスへのリクエスト間でのメモリキャッシュの利用状況を可視化するため、 /merics にて Prometheus メトリクスを公開します。

App Runner のフルマネージドなビルドパイプラインを使ってデプロイするために、まず GitHub アカウントにリポジトリのフォークを作成します。そして、 App Runner で新しいサービスを作成し、 Source code repository タイプを選択します。その後、 GitHub アカウントに接続し、リポジトリとブランチを選択します。

main ブランチへのコミット時にコンテナを自動的にデプロイするために、 Deployment trigger に Automatic を選択します。

アプリケーションのランタイムに、 Python 3Node.js 12 を選択します。そして、ビルドコマンド、アプリケーションの起動コマンド、および公開するポートを指定します。

また、リポジトリ内に apprunner.yaml ファイルを作成して、ビルドプロセスを制御することもできます。下記は Python アプリケーションをビルドするための、簡単な apprunner.yaml ファイルのサンプルです。

version: 1.0
runtime: python3
build:
 commands:
  build:
  - yum install -y pycairo
  - pip install -r requirements.txt
run:
 command: python app.py
 network:
   port: 8000

こちらのドキュメントで、 apprunner.yaml のサンプルを確認できます。

一度リポジトリに apprunner.yaml を作成してしまえば、 App Runner コンソールでサービスを直接更新することなく、リポジトリを経由してコンテナのビルドを制御できます。コードをプッシュすると、コンテナの新しいバージョンがビルドされ、レジストリにプッシュされてデプロイされます。開発者にかわって、 App Runner が全てを処理します。

パートナーとの連携

私達はまた、Pulumi や Logz.io 、そして Trek10 などの AWS パートナーのサービスと App Runner が連携できるよう彼らと協力して動いています。

Pulumi -「 AWS App Runner は素晴らしいです。最先端のコンテナテクノロジーをベースに作られているにも関わらず、開発者が一切コンテナについて知らなくても Web アプリケーションを実行できるのです。私たちは、 Pulumi のリソースとして App Runner をサポートできることを嬉しく思います。」

Logz.io – 「私たちが提供する ELK と互換性のあるオープンソースベースのログマネジメントツール、 Prometheus に基づくインフラストラクチャ監視、 Jaeger に基づく分散トレーシングなどの仕組みを使って、 AWS App Runner をサポートできることを嬉しく思います。 Logz.io と AWS App Runner の統合によって、お客様はアプリケーションとインフラストラクチャのパフォーマンスを完全に把握でき、エンジニアリングリソースと時間を節約しながら、技術スタックのトラブルシューティングとスケーリングを改善できます。」

Trek10 – 「 Trek10 では、我々のクライアントの AWS 上の開発とイノベーションを加速させるソリューションを構築しています。インフラストラクチャ管理の抽象化と Web アプリケーションデプロイの簡素化によってイノベーションを加速する可能性がある AWS App Runner の発表に、興奮しています。クライアントによる、 App Runner を使ったクラウドネイティブなアプリケーションの開発、および実行を支援できることを楽しみにしています。」

また、 MongoDB や DataDog および HashiCorp といった App Runner のお客様が信頼し、使い慣れたツールキットやサービスとの連携もあります。

さらに詳しい情報について

App Runner には、まだまだたくさんの情報があります。ドキュメントと、 apprunnerworkshop.com のワークショップを確認することをお勧めします。このワークショップでは、自動ローリングアップデートについて説明し、アプリケーションがデータベースに接続する例を紹介します。また、 5月19日 12:00 – 13:00(水) EDT で開催される Container fron the Couch というライブストリームに参加すると、ワークショップのシナリオを見ることができ、質問も受け付けます。

App Runner は、コンテナを大規模に実行するのに役立つ最新の AWS サービスです。 AWS が数十億のコンテナを実行してきた運用経験を享受でき、誰でも簡単に開始できるようになります。 GitHub で App Runner の公開ロードマップを確認することができます。もし必要な機能があれば、私たちにお知らせください。

翻訳はソリューションアーキテクト石本 (いしもと) が担当しました。