Upgrade to Pro — share decks privately, control downloads, hide ads and more …

App Runner Night 202305

App Runner Night 202305

Kazuki Maeda

May 17, 2023
Tweet

More Decks by Kazuki Maeda

Other Decks in Technology

Transcript

  1. Docker Image 既にあるから
    デプロイしたら動くんでしょ?
    2023/5/17 App Runner Night
    @kzk_maeda

    View Slide

  2. Kazuki Maeda @kzk_maeda
    SRE @atama plus
    AWS Community Builders
    AWS Startup Community Core Member
    7+ years of experience of AWS
    Like:
     Lambda / Step Functions / Glue / MWAA / Athena
     最近はLlamaIndexとmomentoを触ってる
    自己紹介

    View Slide

  3. AppRunnerとの出会い

    View Slide

  4. View Slide

  5. AppRunner
    App Runnerとの出会い

    View Slide

  6. App Runner 始めました
    ● PaaSで運用していたサブシステムをAWSに移行することに(先月)
    ○ Docker deployを用いていた
    ● 既存のContainer Imageが活用できることに加え、Outbound IP固定化などのいく
    つかの要件があり、App Runnerが満たしていそうだったので利用開始

    View Slide

  7. Docker Image 既にあるから
    デプロイしたら動くんでしょ?

    View Slide

  8. 甘い

    View Slide

  9. 初回構築 IaC CI/CD

    View Slide

  10. 初回構築 IaC CI/CD
    二度と触れない文鎮Service 予測できないLog Group 諦めた自動デプロイ

    View Slide

  11. ちゃんと作る

    View Slide

  12. 初回構築 IaC CI/CD
    それぞれでの注意点を紹介します

    View Slide

  13. 初回構築 IaC CI/CD
    二度と触れない文鎮Service 予測できないLog Group 諦めた自動デプロイ

    View Slide

  14. 二度と触れない文鎮Service
    ● 初回のdeployでhealth checkに失敗すると、文鎮Serviceが完成!
    初回構築 IaC CI/CD

    View Slide

  15. 【なぜ?】二度と触れない文鎮Service
    ● App RunnerはB/Gデプロイが裏側で実行される
    ● 一度でもhealthyになったServiceであれば、その後のデプロイで失敗しても
    一つ前の状態に自動で戻してくれる
    ● が、初回デプロイだと戻し先がなくて困っちゃったのカナ
    初回構築 IaC CI/CD
    https://docs.aws.amazon.com/apprunner/latest/dg/architecture.html

    View Slide

  16. 【どうする?】二度と触れない文鎮Service
    ● 無理です、作り直しましょう
    初回構築 IaC CI/CD

    View Slide

  17. 初回構築 IaC CI/CD
    二度と触れない文鎮Service 予測できないLog Group 諦めた自動デプロイ

    View Slide

  18. 予測できないLog Group
    ● App Runnerはデプロイすると自動でLog Groupを作成してくれる
    ● が、作成されるLog Groupにservice-idが含まれていて事前予測不可
    ○ /aws/apprunner/service-name/service-id/service
    ● そして保持期間が無制限
    ● そのためIaCで保持期間を設定したLog Groupが作成できない
    初回構築 IaC CI/CD

    View Slide

  19. 【なぜ?】予測できないLog Group
    ● 仕様です
    ● コンソールからアプリケーションログ等を参照する機能が提供されており、
    一意性担保のために service-id が必要になったんだと思われる
    初回構築 IaC CI/CD
    https://docs.aws.amazon.com/ja_jp/apprunner/latest/dg/monitor-cwl.html

    View Slide

  20. 【どうする?】予測できないLog Group
    ● (Terraformの場合)
    ● App Runner Serviceに依存する形でLog Groupを定義
    ● ログエントリが発生すると先に作成されるので、その場合は対象Resourceをimport
    して保持期間を修正
    初回構築 IaC CI/CD

    View Slide

  21. 初回構築 IaC CI/CD
    二度と触れない文鎮Service 予測できないLog Group 諦めた自動デプロイ

    View Slide

  22. 諦めた自動デプロイ
    ● ECRにpushしたら自動でApp Runnerにデプロイ!べんりぃ!
    ● ⇨ RepositoryとWorkloadを別のAWSアカウントにしていると
    自動デプロイができない!
    初回構築 IaC CI/CD

    View Slide

  23. 【なぜ?】諦めた自動デプロイ
    ● 仕様です
    ● なんとなく、いろいろ難しそうだなというのはわかります
    ● ECRのCross Account Replicationでもダメでした
    (pushが動いてるわけではなさそうなのでそれはそう)
    初回構築 IaC CI/CD

    View Slide

  24. 【どうする?】諦めた自動デプロイ
    ● ① 別のCI/CDサービスを使って頑張る
    ○ これにより、デプロイプロセスの中で container targetのhealth checkを実行できる
    ○ のでApp Runnerにデプロイする際に health checkで落ちてrollbackすることや文鎮になることを防
    止できるので逆にアリかもしれない
    ○ github actionsのサンプルはあるけど
    test phaseがない
    ● ②ECRをApp Runnerと同じアカウントに構築する
    初回構築 IaC CI/CD
    CircleCIの例

    View Slide

  25. まとめ

    View Slide

  26. 色々あったけど、App Runnerの抽象レベルは好きなので
    これからもよろしくね!

    View Slide