AWSアーキテクチャアイコンクイズを作ってApp Runnerにデプロイしてみた
はじめに
いきなりですが、皆様は以下のアイコンが何のAWSサービスか分かるでしょうか?
解答
AWS Transit Gateway
私は日頃、AWSのアーキテクチャ図を見ることが多いのですが、何のアイコンかパッとわからない奴があってはならぬ...
ということで、AWSのアーキテクチャアイコンクイズを作ってみました。
こちらのリンクから実際に遊べるので、興味ある方は少し遊んでみてください。
今回はAWS App Runner入門も兼ねて、作ったアプリケーションAWS App Runnerへデプロイするところまで解説します。
おことわり
- 今回の記事を参考にデプロイして発生した一才のトラブルの責任は負いません
今回のアプリを動かしたとしても月額数ドル程度かと思います。 - App Runnerにデプロイする際には、ECRやApp Runnerの適切な権限がある前提で手順を記載してあります
AWSアーキテクチャアイコンクイズ
コードはGitHubにアップロードしてあります。アプリはFlaskで作成しており、かなりシンプルなものとなっております。
Dockerがインストール済みであれば、リポジトリをCloneしてすぐにローカルで遊ぶことができるようになっています。
アプリ動作イメージや機能は以下の通りです。
アプリ動作イメージ
アプリ機能
サービス名の初期値は文字列の70%を*で置換して表示。
Hint
解答をランダムで3文字表示。
Show Answer
解答の表示。
Next Quiz
次のクイズを表示。
AWS App Runnerへデプロイしてみる
ECR作成
コンテナイメージを格納するECRを作成します。
aws ecr create-repository \
--repository-name aws-architecture-icon-quiz-repo \
--image-scanning-configuration scanOnPush=true \
--region ap-northeast-1
Git Clone
git clone https://github.com/tsumita2929/aws-architecture-icon-quiz-app.git && cd aws-architecture-icon-quiz-app
ECR Image Push
コンテナイメージをビルドしてECRにPushします。
<YOUR_AWS_ACCOUNT_ID> はご自身のAWSアカウントIDを指定してください。
docker build
時に--platform
を指定していますが、M1/M2 Mac以外は--platform
は不要です。
※今回はlatestタグでPushしていますが、実運用するアプリでは誤デプロイ防止などの観点からlatestタグは非推奨
AWS_ACCOUNT_ID=<YOUR_AWS_ACCOUNT_ID>
APP_NAME="aws-architecture-icon-quiz"
ECR_REPO_NAME="aws-architecture-icon-quiz-repo"
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.ap-northeast-1.amazonaws.com
docker build --platform amd64 -t ${APP_NAME} .
docker tag ${APP_NAME}:latest ${AWS_ACCOUNT_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/${ECR_REPO_NAME}:latest
docker push ${AWS_ACCOUNT_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/${ECR_REPO_NAME}:latest
AWS App Runnerデプロイ
1. ECRリポジトリとECRアクセスのIAMロールを選択して、次へ
2. 以下の値を入力して、次へ
Service Name:aws-architecture-icon-quiz
Virtual CPU: 0.25
Virtusl Memory: 0.5 GB
Port: 5000
3. 確認画面で作成&デプロイを押下すると、App Runnerのサービスが作成される
4. 5分ほど待つとStatusがRunningになるので、Defualt domainにアクセスする
5. デプロイされたアプリケーション
おわりに
今回は「AWSアーキテクチャアイコンクイズを作ってApp Runnerにデプロイしてみた」と称して、Flaskで簡単なアプリケーションを構築し、AWS App Runnerにデプロイしてみました。
ALB + Fargateなどを自分で構築するのと比べて非常に簡単に構築できる上に、標準でTLS対応してくれるという非常に素敵なApp Runnerさんでした。
また、今回の記事中では記載しませんでしたが、カスタムドメイン設定も数クリック+3レコード追加するだけで対応できます。
この記事を読んでくださった方が、AWSに興味を少しでも持っていただけると嬉しいです。
ここまで読んでくださってありがとうございました。
Discussion