恐らく殆どの人がAWS ECSやFargateでコンテナをホストしたり、Lambdaで非同期関数を作ってサービスを作るのはやると思います。
そんな中、人は言います。
「App Runnerって要らなくない?ECSとかFargateあれば良いし。」
「何するサービスなのか知らない。」
「初めて聞いた。」
「Cloud Runの方が自動でインスタンスの数を調整するのでLambdaなんてオワコン」
という声に応えるため、具体的にこういう用途で使ったよ、という覚書です。
そもそもApp Runnerとは?
リンクを貼っておきます。
https://aws.amazon.com/jp/apprunner
端的に言ってしまうと、「作成したコンテナイメージをホストして動かす。」だけのサービスです。
それだけ言ってしまうとECSやFargateで良くないか?と感じるかもしれません。
しかし、タスク定義を書いてサービス間のつながりを決めたり、インスタンスのスペックを詳細に決めたりと、クラスターの設計をある程度考えて使わないといけないのはなかなか面倒臭いものがあります。
ちょっと何か検証用にとりあえず動かす、という用途としてはApp Runnerに軍配が上がります。
AWS CLI上での扱いやすさ
実際、公式ページのAWS CLI例を見ると、App Runnerの方が圧倒的にコマンドの記述量が少ないです。
GUI上でもそこまで大量に設定項目があるわけでもなく、どういうコンテナイメージを使って、どれぐらいのインスタンススペックで動かすかだけ決めたらすぐ動くので、このスピーディーさはなかなか他にはない利点です。
(Jsonで結構細かくサービスの定義を書かなきゃいけないのは内緒だ)


定常的な起動に便利
ここは主にlambdaと比較したときの違いですが、対象のリソースを起動・停止して使用することが必要になります。そのため非同期処理は苦手ですが、定常的に起動して使用する、サーバーのような想定でコンテナを動かすことができます。これはlambdaにはないメリットで、しかもECSほど大規模にクラスターを作成する必要がないので、狙ったサービスだけ起動して使う、とかがかなり容易です。
起動・停止もAPIで手軽にできることを考えると、何かのアプリの起動のタイミングで同時に起動して、その処理中に使用するサービスをホストする、というような用途に向いています。
総評
総評としては、決してメインストリームではないけど中々手軽に使える良いサービス、という印象です。
ECRにコンテナイメージを置けばほぼすぐ使えるし、これで検証したサービスを使ってECSでクラスター化してサービス化する流れに繋げられるので、そういうワークフローとして作ってしまうのは全然ありですね。
もっとみんな使おう。