AWS App Runnerを使用して15分でHTTPSアクセス可能なWEBページを作成しよう

## AWS App Runnerとは
AWS App Runnerはフルマネージド型のコンテナアプリケーションサービスです。
インフラストラクチャやコンテナの経験がなくても、ウェブアプリケーションやAPIサービスを簡単に構築、デプロイ、実行が可能です。
端的に説明しますと、色んなAWSサービスを組み合わせなくても、AWS App Runnerとリポジトリがあれば、HTTPSアクセス可能でスケーラブルなWEBページが作成できます。
## AWS App Runnerのメリット
- ELBを作成しなくても自動的に負荷分散が可能
- オートスケーリングが簡単に設定可能
- Codeシリーズを使わなくもアプリケーションをECRやGitにプッシュすれば、自動でデプロイされる
- サブネット、ルートテーブル、セキュリティグループ、ELBなど機能として盛り込まれているので意識する必要がない
- プライベートサブネット上のDBや、Secrets Managerなどとも連携可能
## AWS App Runnerのデメリット
- オートスケーリングの条件が同時実行数のみ（CPU使用率などでスケーリングはできません）
- サイドカーコンテナに対応していない
- セキュリティグループによるIP制限付加（WAFを使用すれば可能です）
## 15分で構築してみる

### ECRのリポジトリを作成する(1分)
ECRのページへ遷移し、「リポジトリを作成」ボタンを押下します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/4615b808-e8d0-ad6d-7e84-5b3b9bccf8cf.png)
<br>
リポジトリ名を適当に入力し、後はデフォルトで「リポジトリを作成」ボタンを押下します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/e199da91-1968-abfc-27ad-35eb70234dfd.png)
<br>
リポジトリが作成されたことを確認します
※URIは後ほど使用するので、メモしておいてください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/4a6c763f-75ae-22f2-989d-127cd3e68ca0.png)

### CloudShellからECRにイメージをプッシュする(4分)
CloudShellを起動します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/9a0459bf-1968-f945-d021-6aa0197f9c51.png)
<br>
ファイルのアップロードからDockerFileとindex.htmlをアップロードします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/93592bf7-5990-38f3-70c5-c54e119411ff.png)
<br>
アップロードするDockerFileとindex.htmlの中身は下記になります。
```docker:DockerFile
FROM nginx:alpine
COPY ./index.html /usr/share/nginx/html
```
```html:index.html
<html lang="ja">
  <head>
    <meta charset="UTF-8">
  </head>
  <body>こんにちは </body>
</html>

```
<br>
ECRのページに戻り、「プッシュコマンドを表示」を押下します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/bb8e2765-686a-d924-5362-dc4e84996088.png)
<br>
4つのコマンドが表示されるので、全てCloudShellに入力してください

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/a248b04f-474b-9418-4568-12b1b7e7b714.png)

<br>
問題なくイメージがプッシュできると、ECRのリポジトリ内にlatestタグでイメージが作成されます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/f6c7f3a2-2922-9e26-9034-cb1117f3e59d.png)

###  App Runnerを起動する(10分)

App Runnerのページに遷移し、「App Runnerサービスを作成」を押下します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/1ed0f9ea-0efe-eb02-7285-cf6e84449464.png)
<br>
先程メモしておいたECRのURIを入力します
ロールは「新しいサービスロールの作成」を選択し、「次へ」ボタンを押下します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/b26018e5-30ab-e639-cd66-438a106e97f6.png)
<br>
サービス名は適当に入力して、ポートは80番へ変更しましょう
後の設定はデフォルトのままでOKで、「次へ」ボタンを押下します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/fc040cbf-20a2-857e-baef-d4dbb12c7497.png)
<br>
デプロイが開始されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/ec6bd39e-1681-49cd-c765-97c32b144f3b.png)

<br>
数分経過するとデプロイが完了し、表示されているデフォルトドメインからWebページをHTTPSアクセスで表示することができます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/6eafc5c9-ef43-28d9-8817-a6741d270c54.png)

<br>
「こんにちは」と表示されていればOKです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/a34d4d57-1d46-8bfa-4f56-661b87e1e511.png)

<br>
App Runner上からアプリケーションのログを簡単に確認することができます<br>
※CloudWatchにも自動的に転送されるので、CloudWatch上での確認も可能です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/741b617b-7925-83fa-b15d-766c4da438fc.png)
<br>
メトリクスもApp Runner上から簡単に確認することができます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3694674/95e0cd98-3e77-c09e-20a4-64801dc98432.png)


## 最後に
- AWS App Runnerを使用することで、15分でHTTPSアクセス可能なWEBページを作成することができました
- デフォルトで払い出されるURLのドメインはApp Runnerになっていますが、自分で購入したドメインを付与することも可能です
- Secrets ManagerやParameter Storeにも対応し、プライベートサブネット上のRDSとも連携できるので、業務でも十分活用できるレベルだと思います