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
1.5k
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
ディレクトリ構成と設定ファイルから考えるSIerのVibe Coding
satoshi256kbyte
0
22
GitHubとGitLabとAWS CodePipelineでCI/CDを組み比べてみた
satoshi256kbyte
4
240
生産性の壁を越えろ! 何がなんでも計測する
satoshi256kbyte
1
31
オープンセミナー2025@広島「君はどこで動かすか?」アンケート結果
satoshi256kbyte
0
270
オープンセミナー2025@広島LT技術ブログを続けるには
satoshi256kbyte
0
180
AWS Summit Japan 2024と2025の比較
satoshi256kbyte
0
21
はじめてのKiro、今あなたは岐路に立つ
satoshi256kbyte
1
80
AWS Summit Japan 2024と2025の比較/はじめてのKiro、今あなたは岐路に立つ
satoshi256kbyte
1
310
フルリモートで社内にどうやって自分の居場所を作るのか?
satoshi256kbyte
12
18k
Featured
See All Featured
Writing Fast Ruby
sferik
628
62k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Rails Girls Zürich Keynote
gr2m
95
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Embracing the Ebb and Flow
colly
87
4.8k
Why Our Code Smells
bkeepers
PRO
339
57k
Six Lessons from altMBA
skipperchong
28
4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Fireside Chat
paigeccino
39
3.6k
Speed Design
sergeychernyshev
32
1.1k
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は⼿軽で格安 • コンテナ系技術で攻めていきたいなら⾜掛かりとしてアリ • ⾃分で開発できるならアリ、引き継ぎ伴うならちょっと待って •
いざとなったら移⾏することは意識しておく⽅よさげ • なので、⼩さめなシステム、適度に分割されてるシステムと相 性がよさそう
ありがとうございました。