AWS App RunnerにLaravelアプリをデプロイする


先日リリースのあったAWS App Runnerがこれだよこれという感じの内容だったのでやってみました。

https://aws.amazon.com/jp/blogs/news/introducing-aws-app-runner/

## 使い方

### 1.コンテナイメージの準備

![スクリーンショット 2021-05-29 12.46.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192321/32a32818-83d6-ee1a-7e10-cabb19100e31.png)

ソースとしてコンテナかリポジトリを選べます。
リポジトリだとruntimeがpythonとnodeの２つのみ対応されています。（21.05.29時点）
ここではLaravel実行環境のイメージをプッシュしてそれをソースとします。

https://github.com/php-pm/php-pm

```Dockerfile
FROM phppm/nginx:latest
COPY . /var/www
CMD ["--bootstrap=laravel","--static-directory=public/", "--app-env=prod" ,"--debug=0", "--logging=0"]
```

```zsh
$ docker build -t ta9to:1.0 .
$ docker run -p 80:80 -d ta9to:1.0
$ curl 0.0.0.0/hello
hello!%
```

作成したイメージをecrへプッシュします。

```zsh
$ export AWS_PROFILE=ta9to
$ aws ecr create-repository --repository-name ta9to
{
    "repository": {
        ...
        "repositoryUri": "****.dkr.ecr.ap-northeast-1.amazonaws.com/ta9to",
        ...
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin ****.dkr.ecr.ap-northeast-1.amazonaws.com/ta9to
Login Succeeded
$ docker tag ta9to:1.0 ****.dkr.ecr.ap-northeast-1.amazonaws.com/ta9to:1.0
$ docker push ****.dkr.ecr.ap-northeast-1.amazonaws.com/ta9to:1.0
The push refers to repository [****.dkr.ecr.ap-northeast-1.amazonaws.com/ta9to]
$ aws ecr list-images --repository-name ta9to
{
    "imageIds": [
        {
            "imageDigest": "sha256:ff374d71a2c7488c26928a6b6e2ad08d808f1c69d04cbb850c8f5dd879dc1080",
            "imageTag": "1.0"
        }
    ]
}
```

### 2.ソースおよびデプロイ

![スクリーンショット 2021-05-29 13.25.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192321/26ae6125-4a61-0d74-dd08-3f194d848ff4.png)

`コンテナイメージのURI`を設定します。
参照ボタンから探せます。

![スクリーンショット 2021-05-29 13.27.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192321/6baf7c73-9d7e-b62b-3629-afe20bb31b9b.png)

`デプロイトリガー`は`自動`に設定し、プッシュしたらデプロイされるようにしました。

### 3.サービスを設定

#### サービス設定

![スクリーンショット 2021-05-29 13.33.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192321/633892e1-3fcd-4d6b-93b4-3c8483974397.png)

#### Auto Scaling

![スクリーンショット 2021-05-29 13.34.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192321/31ed077e-7300-6ad5-9aad-80c2ff73ea47.png)

#### ヘルスチェック

![スクリーンショット 2021-05-29 13.34.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192321/e0a3d44c-ac43-d7ec-f545-2c34369b73df.png)

#### セキュリティ、タグ

![スクリーンショット 2021-05-29 13.35.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192321/306d0eb6-df18-4706-5c35-0b3682cba22f.png)

#### 確認および作成

![スクリーンショット_2021-05-29_13_36_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192321/e2273227-89dd-f7a8-7691-713cc1b01194.png)

![スクリーンショット_2021-05-29_13_41_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192321/b6e8d288-aa55-5126-fc23-5797b9e8a30c.png)

```zsh
$ curl https://zdggfapa7h.ap-northeast-1.awsapprunner.com/hello
hello!%
```

### 4.カスタムドメイン

![スクリーンショット_2021-05-29_19_11_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192321/2d5e1f88-6617-f6a5-075e-aa61df23f282.png)

指定されたレコードを追加する。

```zsh
$ curl https://www.ta9to.com/hello
hello!%
```

![スクリーンショット 2021-05-29 20.01.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192321/a9684e89-c0cf-f619-60c5-940a9590697e.png)


完成！

コードを（コンテナイメージを）プッシュするだけでオートスケールとか一切設定を気にせず実行環境が出来上がりました。
これこれ。