🐟

AWSアーキテクチャアイコンクイズを作ってApp Runnerにデプロイしてみた

2023/06/25に公開

はじめに

いきなりですが、皆様は以下のアイコンが何のAWSサービスか分かるでしょうか?
tgw

解答

AWS Transit Gateway

私は日頃、AWSのアーキテクチャ図を見ることが多いのですが、何のアイコンかパッとわからない奴があってはならぬ...
ということで、AWSのアーキテクチャアイコンクイズを作ってみました。
こちらのリンクから実際に遊べるので、興味ある方は少し遊んでみてください。
今回はAWS App Runner入門も兼ねて、作ったアプリケーションAWS App Runnerへデプロイするところまで解説します。

おことわり

  • 今回の記事を参考にデプロイして発生した一才のトラブルの責任は負いません
    今回のアプリを動かしたとしても月額数ドル程度かと思います。
  • App Runnerにデプロイする際には、ECRやApp Runnerの適切な権限がある前提で手順を記載してあります

AWSアーキテクチャアイコンクイズ

コードはGitHubにアップロードしてあります。アプリはFlaskで作成しており、かなりシンプルなものとなっております。
Dockerがインストール済みであれば、リポジトリをCloneしてすぐにローカルで遊ぶことができるようになっています。
アプリ動作イメージや機能は以下の通りです。

アプリ動作イメージ

app-image

アプリ機能

サービス名の初期値は文字列の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ロールを選択して、次へ

app-runner-1

2. 以下の値を入力して、次へ

Service Name:aws-architecture-icon-quiz
Virtual CPU: 0.25
Virtusl Memory: 0.5 GB
Port: 5000
app-runner-2

3. 確認画面で作成&デプロイを押下すると、App Runnerのサービスが作成される

app-runner-3

4. 5分ほど待つとStatusがRunningになるので、Defualt domainにアクセスする

app-runner-4

5. デプロイされたアプリケーション

app-runner-5

おわりに

今回は「AWSアーキテクチャアイコンクイズを作ってApp Runnerにデプロイしてみた」と称して、Flaskで簡単なアプリケーションを構築し、AWS App Runnerにデプロイしてみました。
ALB + Fargateなどを自分で構築するのと比べて非常に簡単に構築できる上に、標準でTLS対応してくれるという非常に素敵なApp Runnerさんでした。
また、今回の記事中では記載しませんでしたが、カスタムドメイン設定も数クリック+3レコード追加するだけで対応できます。

この記事を読んでくださった方が、AWSに興味を少しでも持っていただけると嬉しいです。
ここまで読んでくださってありがとうございました。

Discussion