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
400
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
アプリケーションエンジニアがDistributed Load Testingで 負荷テストをしてみる〜Ver.B〜
satoshi256kbyte
2
42
アプリケーションエンジニアがDistributed Load Testingで負荷テストをしてみる〜Ver.A〜
satoshi256kbyte
2
79
AWS App Studio (Preview)は何分でアプリを作れるのか
satoshi256kbyte
0
180
AWS CodeGuruでPythonのコードを自動レビューしてもらおう
satoshi256kbyte
1
120
Gitでコンフリクトが起きたらコミットしよう
satoshi256kbyte
1
45
ワクワク状態を維持するレトロスペクティブ
satoshi256kbyte
1
98
プログラムのスタート地点はどこなのか?
satoshi256kbyte
1
65
DB調査をしやすくするためのログ設計
satoshi256kbyte
5
540
Amazon Aurora Serverless v2が意外と高かった話と、AWS Database Migration Serviceの話
satoshi256kbyte
1
290
Featured
See All Featured
Practical Orchestrator
shlominoach
185
10k
Creatively Recalculating Your Daily Design Routine
revolveconf
214
11k
Agile that works and the tools we love
rasmusluckow
325
20k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
26
2.1k
Web development in the modern age
philhawksworth
203
10k
BBQ
matthewcrist
82
9k
Large-scale JavaScript Application Architecture
addyosmani
506
110k
A designer walks into a library…
pauljervisheath
201
24k
Rails Girls Zürich Keynote
gr2m
93
13k
KATA
mclloyd
20
13k
Designing Experiences People Love
moore
136
23k
Done Done
chrislema
179
15k
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は⼿軽で格安 • コンテナ系技術で攻めていきたいなら⾜掛かりとしてアリ • ⾃分で開発できるならアリ、引き継ぎ伴うならちょっと待って •
いざとなったら移⾏することは意識しておく⽅よさげ • なので、⼩さめなシステム、適度に分割されてるシステムと相 性がよさそう
ありがとうございました。