新サービス AWS App Runner を使ってみた


初めに

AWSの新サービスApp Runnerがローンチされました。どんな手順でWebアプリをデプロイできるのか確認してみました。ECSよりも格段にデプロイが簡単でした。

App Runner

  • コンテナネイティブのフルマネージドサービス
  • オーケストレーターの設定、ビルドパイプラインの準備、ロードバランサーの調整、 TLS 証明書のローテートなどは必要ない
  • サーバーレス
  • ECR または GitHub をプロバイダーとして利用可能

デプロイ手順

事前準備

今回はECRを使います。事前にECRにイメージをプッシュしておきます。

1 イメージを選択

「参照」をクリックし使用するイメージを選択します。

2 ロールの選択

App Runner が ECR からイメージをプッシュできるように権限を付与します。

こちらのポリシーがアタッチされたロールが作成されました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:DescribeImages",
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability"
            ],
            "Resource": "*"
        }
    ]
}

信頼されたエンティティ

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "build.apprunner.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

ロール名
AppRunnerECRAccessRole

ポリシー名
AWSAppRunnerServicePolicyForECRAccess

3 サービス設定

3.1 サービス設定

サービス名、CPU・メモリ、ポートを設定します。

最初、イメージでエクスポートするポートをここで設定するポートと異なるポート番号を指定したために、失敗しました。失敗例にこのことを記載しました。

3.2 スケーリング設定

デフォルト

カスタム

「新規追加」をクリックします。

設定名、スケーリングのしきい値などを設定し、保存をクリックします。

3.3 ヘルスチェックの設定

ロードバランサーによるヘルスチェックの設定をします。

3.4 セキュリティ設定

他のサービスへアクセスしたい場合はここでロールを選択します。

4 確認画面

「作成とデプロイ」をクリックします。
注意
「新しいロールの作成」で App Runner のサービスを作成を行ったところ、ロールに関するエラーが発生しました。しかし少し時間をおいて(1~2分)、再度「作成とデプロイ」をクリックしたところ、問題なくデプロイが開始されました。

5 デプロイ

サービスを作成している状態です。

成功すればステータスがRunningに切り替わります。

失敗例

コンテナのポートと App Runner のポートが異なっていた場合、デプロイに失敗しました。

EXPOSE 80

上はDockerfile、下の画像はApp Runnerで設定するポートです。

再デプロイ

デプロイ設定を手動にしている状態でイメージを編集した場合、自動ではその編集内容は反映されません。以下の「デプロイ」をクリックすると反映されます。

デプロイ設定の変更

デプロイ方法を変更したい場合、設定タブで「編集」をクリックします。

「自動」を選択し、「変更を保存」をクリックします。

この状態でイメージをプッシュし直すと自動でデプロイされます。

参考記事