Save 37% off PRO during our Black Friday Sale! »

AWS App Runner を触ってみた話 #ゆるWeb札幌

AWS App Runner を触ってみた話 #ゆるWeb札幌

ゆるWeb勉強会@札幌 OnLine #14
https://mild-web-sap.connpass.com/event/222162/

AWS App Runner を触ってみた流れのスライド。
AWS Elastic Beanstalk との比較も少し触れています。

13725f35541aa680ed5f85d16b85947a?s=128

Kihara, Takuya

August 30, 2021
Tweet

Transcript

  1. AWS App Runner を 触ってみた話 ゆるWeb勉強会@札 幌/OnLine #14 2021年8⽉30⽇ tacck

    ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 1
  2. 誰 ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 3 名前 ⽊原 卓也 /

    @tacck 主催コミュニティ ゆるWeb勉強会@札幌 スマートスピーカーで遊ぼう会@札幌 運営メンバー Amplify Japan User Group 好きな フィギュアスケートの技 スプレッド・イーグル
  3. AWS App Runner ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 4

  4. AWS App Runner • ECS (Fargate) を使う • リポジトリ (ECR)

    or ソースコード (GitHub) から ⾃動でサービス開始・更新してくれる。 • スケーリングなどをお任せできる。 ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 5
  5. つまり • 極端に⾔えば、開発側はデプロイしたい Docker コンテナを⽤意するだけ。 ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 6

  6. 似たサービスがあったような • AWS Elastic Beanstalk ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 7

  7. AWS Elastic Beanstalk • EC2をベースにしている PaaS (Platform as a Service)

    • 特定の⾔語の実⾏環境が容易されている • Python • Ruby • PHP • Node.js • Java • .NET • Docker • 開発者はアプリケーションコードをプッシュするだけ ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 8
  8. ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 9

  9. 使い始め / Elastic BeansTalk • 動かすのは、 Elastic BeansTalk が簡単。 ゆるWeb勉強会@札幌/OnLine

    #14 / #ゆるWeb札幌 10 curl -s "https://laravel.build/eb-example" | bash cd eb-example eb init --profile tack-work eb create eb-example --profile tack-work eb deploy eb-example --profile tack-work eb open eb-example --profile tack-work ### EB 削除 eb terminate --profile amplify-dev
  10. 使い始め • App Runner は⾊々準備がいる。(主にECR) ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 11

    curl -s "https://laravel.build/ar-example" | bash ### ECR 準備 cd ar-example/ aws --profile tacck-work ecr create-repository --repository-name ar-example --region ${AWS_REGION} aws --profile tacck-work ecr get-login-password | docker login --username AWS --password-stdin ${REGISTRY_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com ### コンテナ作成 [Docerfile作成など] docker build -t ar-example . docker tag ar-example ${REPOSITORY_URI} docker push ${REPOSITORY_URI} ### App Runner ⽤ IAM Role 設定 aws --profile tacck-work iam create-role --role-name AppRunnerECRAccessRole --assume-role-policy-document file://policy.jso aws --profile tacck-work iam attach-role-policy --role-name AppRunnerECRAccessRole --policy-arn 'arn:aws:iam::aws:policy/service-role/AWSAppRunnerServicePolicyForECRAccessʼ
  11. 使い始め • App Runner は⾊々準備がいる。(主にECR) ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 12

    ### App Runner 開始 aws --profile tacck-work apprunner create-service --cli-input-json file://app-runner.json (更新はコンテナイメージを docker push) ### App Runner 削除 aws --profile tacck-work apprunner delete-service --service-arn arn:aws:apprunner:${AWS_REGION}:${REGISTRY_ID}:service/ar-example/1d60b4243b4746d18dbfae11198e9d2c
  12. 開発中 • 個⼈なら、 Elastic BeansTalk が楽。 • 複数⼈だと、それぞれが EB の環境を作らないと混乱する可能性あり。

    • 複数⼈なら、 App Runner が良さそう。 • 通常の開発フローから、マージ済みの特定ブランチを App Runner へ反映、 という流れが⾃然にできる。 ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 13
  13. 運⽤ • Elastic BeansTalk は裏側の EC2 も考慮が必要。 • インスタンスの管理が必要になってくる。 •

    インスタンスの作り直しができるのであれば、 管理コストはある程度抑えられそう。 • App Runner は Docker イメージ⾃体の鮮度を考慮。 • ベースとしたイメージを定期的に更新。 • 現状 VPC への配置ができなそうなので、 セキュリティ⾯の⼯夫が必要。 (今後解消されると思われる) ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 14
  14. その他 • Elastic BeansTalk の⽅が歴史ある分、情報が多い。 • が、古い情報が多い。 • 公式は更新されているが、「使ってみた」系が以前のバージョンベースだったり。 •

    App Runner は 新しい分、まだ未知数。 • 使い⽅の情報は公式含め、たくさん出ている。 • 機能⾯では、まだ発展途上。(CLI, VPC...) ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 15
  15. まとめ • App Runner でコンテナをさくっと動かす、というのは簡単。 • コンテナ間連携・サービス連携が、簡単にできるようになって欲しい。 • 専⽤の CLI

    も欲しい。 • AWS Amplify も Fargate を使ったコンテナデプロイ機能がある。 • そのうち、 Amplify と App Runner がつながると⾯⽩いかも。 • Laravel は、開発⽤の(⼿元で使う) Docker 環境構築機能が追加されていた。 → Laravel Sail https://laravel.com/docs/8.x/sail ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 16
  16. 参考資料 • AWS の中の⼈の動画を 観ましょう。 ゆるWeb勉強会@札幌/OnLine #14 / #ゆるWeb札幌 17

    https://www.youtube.com/watch?v=8Tmf5J2hXT8 [Japanese] Hello AWS App Runner