Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS App Runnerで気軽にAPIを作ってみるーそして、これはどんな人向けなのか?ー
Search
Satoshi Kaneyasu
May 08, 2024
2
840
AWS App Runnerで気軽にAPIを作ってみる ーそして、これはどんな人向けなのか?ー
[主にクラウドの話してます - 広島](
https://connpass.com/event/315682)での発表内容です
。
Satoshi Kaneyasu
May 08, 2024
Tweet
Share
More Decks by Satoshi Kaneyasu
See All by Satoshi Kaneyasu
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
250
おもにクラウドの話してます#4 OPスライド
satoshi256kbyte
0
44
AWS認定資格を勉強した先に何があったか
satoshi256kbyte
2
220
Amazon Aurora Serverless v2のアプデと、Amazon Aurora PostgreSQL Limitless DatabaseのGAについて
satoshi256kbyte
0
130
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
450
Amazon Neptuneで始めてみるグラフDB-OpenSearchによるグラフの全文検索-
satoshi256kbyte
4
440
【5分LT】フロントエンドとバックエンドを繋ぐ認証サービス Amazon Cognito
satoshi256kbyte
2
89
AWS認定資格を受験するにあたり、気づいたこと・実践していたことのまとめ
satoshi256kbyte
2
190
[LT]Amazon Neptuneで始める初めてのグラフDB ー グラフDBを使う意味を考える ー
satoshi256kbyte
2
370
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Designing for Performance
lara
604
68k
Designing for humans not robots
tammielis
250
25k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Gamification - CAS2011
davidbonilla
80
5.1k
Building an army of robots
kneath
302
44k
Code Review Best Practice
trishagee
65
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Transcript
AWS App Runnerで気軽にAPIを 作ってみる ーそして、これはどんな⼈向けなのか︖ー 2024.05.09 SATOSHI KANEYASU
⾃⼰紹介 ⽒名︓兼安 聡 職種︓クラウドエンジニア 最近のお仕事︓DevOpsの推進 趣味︓サックス、筋トレ、CS ゲーム 資格︓ X(Twitter)︓@satoshi256kbyte
はじめに • 新サービス開発やオンプレ>クラウドの技術⽀援をしています。 • ゼロからSPAとサーバーレスをやりたい声を頻繁に頂きます。 • 急激な変化は⼾惑う可能性⼤なので中間の技術が探して、 AWS App Runnerをやってみたので紹介します。
• 資料内のサンプルはPython+FastAPIです。 • AWS App Runnerを全⼒で推してるわけではありません。 • 本資料は2024.05時点で筆者が調べた範囲で書いています。
SPAとサーバーレスは考えることが多い • そもそもフロントとバックが別れる • ソースの書き⽅が変わる • サーバーレスなりのデプロイ⽅法が必要 • AWS SAM、CI/CDがないと負担が⾼い
AWS Lambda Amazon API Gateway
取り急ぎアプリ側だけの変化を優先させよう AWS Lambda Amazon API Gateway • そもそもフロントとバックが別れる • ソースの書き⽅が変わる
• サーバーレスなりのデプロイ⽅法が必要 • AWS SAM、CI/CDがないと負担が⾼い AWS App Runnerを使えば ここの負担が軽くなる。
AWS App Runnerのメリット • ECRまたはGitHubにプッシュしたら⾃動デプロイ • 何もしなくてもロードバランサーがつく • 何もしなくてもオートスケーリング(⾃動拡張) •
料⾦体系がサーバーレスに近い • アクセスされた分だけ費⽤がかかる AWS App Runner
AWS App Runnerのメリット • ECRまたはGitHubにプッシュしたら⾃動デプロイ • 何もしなくてもロードバランサーがつく • 何もしなくてもオートスケーリング(⾃動拡張) •
料⾦体系がサーバーレスに近い • 使った分だけ費⽤がかかる AWS App Runner 今回はこちらでお話しします。
AWS App Runnerのデプロイの仕組み AWS App Runnerのサービス作成画⾯でGitHub接続新規作成します。 ブラウザでポップアップをブロックしてると、新規追加を押しても何も反応しないので要注
AWS App Runnerのデプロイの仕組み GitHubアカウントにAWSとの接続アプリが追加されます。 連携を許可するリポジトリを指定します。(従って、勝⼿に連携されることはないと思います。)
AWS App Runnerのデプロイの仕組み • リポジトリ側にビルド・デプロイ⽤ファイル (apprunner.yaml)を⽤意します。 • AWS App Runnerはこのファイルに従い、
ビルドとデプロイを⾏います • FastAPIで書いています。 • uvicornでAPIを起動しています。 • 環境変数については後述します。 ライブラリの Install 環境変数 APIの起動
AWS App Runnerの料⾦イメージ 負荷はOSSのk6でかけています。 0.009 USD/GB 0.081 USD/vCPU 時×1〜5
実際の作業 • FastAPIのチュートリアルを参考にコード書きます。 • 起動コマンドで動作確認 uvicorn app.main:app --host 0.0.0.0 --port
8080 • コンテナ内のFastAPI – DockerにあるDockerfileを参考に、 apprunner.yamlを書きます。 • GitHubにプッシュ。 • AWS App Runnerを設定、GitHubを⾒にいきデプロイ。
AWS App Runnerのここまでの感想 • GitHubとの連携までできればかなり快適 • オートスケールの反応も早く、使ってない時は本当に安い • アプリログがCloudWatch Logsに出るのでログ活⽤もしやすい
ここから気になるところです
⼀⾏︖で起動コマンドを書かないと、 環境変数をYAMLに書かなければならない 環境変数のボタンがない
⼀⾏︖で起動コマンドを書かないと、 環境変数をYAMLに書かなければならない 環境変数 このファイルはGitHubにプッシュするので、 ここに環境変数を書くのは抵抗感を感じる。 パラメータストアやSecretsManager との連携は可能。
YAMLが気になるなら、 コンテナレジストリの⽅がよいかも
RDSなどと連携させるのに、 VPCコネクタという機能が必要 Amazon Aurora AWS App Runner Virtual private cloud
(VPC) Public subnet Private subnet <VPCコネクタ> セキュティグループもあり VPCコネクタからの 通信許可が必要 App Runner⾃体はあくまでパブリックにいる。 App Runnerの送信をVPCに向けないとPrivate Subnet内のRDSとの通信はできない。 送信をVPCに向けるとそのままだと外部との通信ができなくなるので、NAT Gatewayなどが必要になる。
以上踏まえてどんな⼈にお勧めなのか
コンテナ化を進めていく⼈にお勧めかと AWS App Runner AWS Lambda Amazon API Gateway Amazon
Elastic Kubernetes Service (Amazon EKS) Amazon Elastic Container Service (Amazon ECS) コンテナの道 サーバーレスの道
理由 • AWS App Runner⾃体は全体的にコンテナっぽい • 現状Amazon Cognitoなどの連携もできないので、 早い段階でコンテナかアプリの⼒でガシガシ実装していくと予想 •
そうするとサーバーレスに移⾏するメリットが薄くなる
AWS App Runnerを⻑く使い続けられるか︖ • 若⼲の発展途上感とブラックボックス感を感じるので、 あくまでSIer向けの技術⽀援という観点だと微妙 • Elastic Beanstalkで苦労したので・・・ •
保守フェーズでの引き継ぎに苦労する気がする • ⾃⾝で選び、開発できるなら⽴場なら話は別 • ⾃分で開発していいのなら選ぶことは⼤いにある
まとめ • AWS App Runnerは⼿軽で格安 • コンテナ系技術で攻めていきたいなら⾜掛かりとしてアリ • ⾃分で開発できるならアリ、引き継ぎ伴うならちょっと待って •
いざとなったら移⾏することは意識しておく⽅よさげ • なので、⼩さめなシステム、適度に分割されてるシステムと相 性がよさそう
ありがとうございました。