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
780
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
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
430
Amazon Neptuneで始めてみるグラフDB-OpenSearchによるグラフの全文検索-
satoshi256kbyte
4
390
【5分LT】フロントエンドとバックエンドを繋ぐ認証サービス Amazon Cognito
satoshi256kbyte
2
59
AWS認定資格を受験するにあたり、気づいたこと・実践していたことのまとめ
satoshi256kbyte
2
170
[LT]Amazon Neptuneで始める初めてのグラフDB ー グラフDBを使う意味を考える ー
satoshi256kbyte
2
340
おもにクラウドの話してます#3 OPスライド
satoshi256kbyte
1
31
AWS CodeCommitの次として考えた場合のAmazon CodeCatalyst
satoshi256kbyte
1
930
アプリケーションエンジニアがDistributed Load Testingで 負荷テストをしてみる〜Ver.B〜
satoshi256kbyte
2
63
アプリケーションエンジニアがDistributed Load Testingで負荷テストをしてみる〜Ver.A〜
satoshi256kbyte
2
120
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Gamification - CAS2011
davidbonilla
80
5k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
It's Worth the Effort
3n
183
27k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
GraphQLとの向き合い方2022年版
quramy
43
13k
A Philosophy of Restraint
colly
203
16k
Producing Creativity
orderedlist
PRO
341
39k
Optimizing for Happiness
mojombo
376
70k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
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は⼿軽で格安 • コンテナ系技術で攻めていきたいなら⾜掛かりとしてアリ • ⾃分で開発できるならアリ、引き継ぎ伴うならちょっと待って •
いざとなったら移⾏することは意識しておく⽅よさげ • なので、⼩さめなシステム、適度に分割されてるシステムと相 性がよさそう
ありがとうございました。