koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

AWS App Runner 振り返り 2022

典型的なWebアプリケーションをホスティングするにあたっては何も考えなくても良しなにやってくれるPaaS が好みで、AWS App Runnerはリリースされた前後から多少注目していた。

所感のまとめ記事を書いてからは積極的触れてはこなかったのだけれど、半年も経っているのでその間の出来事を含めて振り返って今後どのように付き合っていくのかを考えてみたい。

koudenpa.hatenablog.com

なお、その間も公開されているロードマップはなんとなく眺めていたり、仕事でAWSを扱っている関係上関連する情報は小耳に挟んでいた。

振り返る前の印象としては、まだおもちゃではあるものの継続して改善はされている。ただしリリース時に当然のようにあってしかるべきな機能も揃ってはいない。実用には厳しい。といった感じだ。

この記事は Calendar for AWS App Runner | Advent Calendar 2022 - Qiita の4日目です。

昨日は AWS App Runner を AWS CDK で構築する でした。

気になりどころはどうなったのか?

振り返るに当たっては、以前の記事で気にしていた要素がどうなったのか? を見ていきたい。

この辺りだ。

  • 大きな不足要素
    • アクセスを制限できない
    • サイドカーがつけられない
    • 安全簡単に認証情報をコンテナに渡せない
  • 個別の気になり要素
    • やっぱ自動デプロイに金取られるの納得いかねー
    • 一時停止中は何もできないぞ気をつけろ
    • WebSocketはサポートされていないぞ気を付けろ
    • それでも使ってなんだか変な動きをしたら? サービス自体を再作成

主にロードマップやIssueを観察していく。

2022/12/03現在のApp Runnerロードマップのスナップショット

アクセスを制限できない

先日サポートされた。

Issue: Allow private endpoints for App Runner services · Issue #2 · aws/apprunner-roadmap · GitHub

リリース記事: AWS App Runner が Amazon VPC 内のプライベートにアクセス可能なサービスのサポートを開始

素朴に便利になった。

個人的にはCloudFrontからのアクセスに限定したいだけの場面が多いので、ちょっと不便な形態ではある。S3のようなアクセス制限を望んでいたのでその点は残念。

AWSのアクセス制限の仕組みに乗せるために、VPCエンドポイントを境界にしているのだろう。

サイドカーがつけられない

暫くの間サポートされることはさそう。

Issue: Allow container side-cars AKA multiple containers per service. · Issue #71 · aws/apprunner-roadmap · GitHub

Support Worker Services · Issue #96 · aws/apprunner-roadmap · GitHub ともどもロードマップに載ってすらいない。

HTTPリクエスト受け付けるWebアプリケーション以外のホスティングは行えないものとして考えるべきだろう。

安全簡単に認証情報をコンテナに渡せない

ロードマップには載っていて、先日Coming soonになった。

Issue: External Configuration/Secret Sources · Issue #6 · aws/apprunner-roadmap · GitHub

Coming soon

対応見込みがあるのは素直に良いけれど、年単位で放置されるような問題ではないだろう。リリース当初から備えておくべき機能だ。というのが率直な感想。

やっぱ自動デプロイに金取られるの納得いかねー

引き続き納得いかねー。

納得いかないだけだけれど、納得いかねー。

AWS App Runner の料金 – フルマネージド型のコンテナアプリケーションサービス - Amazon Web Services

一時停止中は何もできないぞ気をつけろ

特に変化していない様子。

節約のために止めているとIaCの適用なんかも全滅するので不便なのだけれど、どうにもならないのだろう。

Pausing and resuming an App Runner service - AWS App Runner

Issueを立てるほどの需要もない。そもそも停止させるのが面倒くさすぎるので、停止とかいらないからゼロスケールサポートしてくれ。なお、こちらはロードマップにすら載っていない模様。

WebSocketはサポートされていないぞ気を付けろ

ロードマップには載っていて、先日リサーチ中になった。

Issue: Support web sockets · Issue #13 · aws/apprunner-roadmap · GitHub

他のロードマップ要素への対応状況を鑑みると、来年の今頃にはサポートされているかもしれない。

それでも使ってなんだか変な動きをしたら? サービス自体を再作成

ロードマップには載っていて、先日対応中になった。

allow configuration changes of failed deployment where status is "create failed" · Issue #95 · aws/apprunner-roadmap · GitHub

他の致命的な要素もちょいちょい対応されている様子。

Changing the ECR Access Role in AppRunner Service lead to the update failure · Issue #142 · aws/apprunner-roadmap · GitHub

これは先の記事で自分が出くわしたのと同じ事象かもしれない。

Just Shipped なロードマップ要素

改めて眺めたけれど、これと言って目を引く要素はなかった。多分元々眺めていたから。

対応言語が増えているのが目につくけれど、ローカルでの開発でDockerを使っていると「ホスティングする際も自分でビルドすればいいじゃん」となって需要があまりない。どのみち動くときはコンテナなので、Lambdaのランタイムが増えてうれしいのようなものがない。対応を待っていたのなら嬉しいのだろうと思う。

振り返ってみて

元々ロードマップは眺めていたこともあって、振り返る前と特に印象は変わらなかった。

とはいえ、プライベートなホスティングがサポートされ、認証情報の受け渡しもサポート見込みとなったので、全く使い物にならない状態は脱して来ているのではないかと思う。

必要を充足する限りではECSと比べてALBを必要とせずにBrue/Greenデプロイが構成されるなど一定の利点もある。

サービスとしての堅牢性に欠ける*1ので、この一点のみで高いサービスレベルが要求される状況では採用しがたい。 ビジネス以上のサポートならなんとかしてもらえるのかも知れないが、リスクを抱えてまで選ぶ利点はない。

嫌いではないし、利点のみを得られる場面で細々と利用はしているので、引き続き観察していきたい。当面はWebアプリケーションをホスティングする第一選択肢は他のサービスとしつつ、また来年気が向いたら振り返ろうと思う。

観察という観点では、GitHubリポジトリWatchしていると公式な情報が流れてきて、こうして振り返るときも情報が集約されているのは非常に体験がよい。これはぜひ広まって欲しい運用だ。

最後に自分のツイートを振り返って見かけた今も変わらない気持ちのつぶやきを貼っておく。

*1:それでも使ってなんだか変な動きをしたら? サービス自体を再作成  の部分