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


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

使い方

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

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

FROM phppm/nginx:latest
COPY . /var/www
CMD ["--bootstrap=laravel","--static-directory=public/", "--app-env=prod" ,"--debug=0", "--logging=0"]
$ docker build -t ta9to:1.0 .
$ docker run -p 80:80 -d ta9to:1.0
$ curl 0.0.0.0/hello
hello!%

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

$ 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.ソースおよびデプロイ

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

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

3.サービスを設定

サービス設定

Auto Scaling

ヘルスチェック

セキュリティ、タグ

確認および作成

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

4.カスタムドメイン

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

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

完成!

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