Slide 1

Slide 1 text

App Runner 実践 JAWS-UG SRE支部 #7 @a2-ito

Slide 2

Slide 2 text

Profile ● Akihiko Ito ● Cloud Architect/SRE ● dotD ● Twitter: @piyohiko110 ● Github: @a2-ito

Slide 3

Slide 3 text

App Runner ● コンテナorコードをデプロイする ● チューニング要素 ○ CPU ○ RAM ○ 同時接続数 ○ 最大・最小サイズ ● エンドポイント ○ パブリックエンドポイント ○ プライベートエンドポイント ● VPCコネクタによるVPC内リソースへのアクセス

Slide 4

Slide 4 text

App Runner実践 1. IaC との組み合わせ 2. CloudFront との組み合わせ 3. コンテナ起動時のトラブル

Slide 5

Slide 5 text

1. IaC との組み合わせ ● App Runner のデプロイをどこまで IaC コード化するか? ○ アプリとインフラのライフサイクルをきれいにしたい

Slide 6

Slide 6 text

1. IaC との組み合わせ ● App Runner のデプロイをどこまで IaC コード化するか? ○ アプリとインフラのライフサイクルをきれいにしたい ①AWSリソースをデ プロイ ②ECRにpush

Slide 7

Slide 7 text

1. IaC との組み合わせ ● 依存関係があるため、2ステップでは構築完了できない ○ ECR がないとコンテナイメージが push できない ○ ECR にコンテナイメージがないと App Runner をデプロイできない ○ App Runner リソースがないと Route53 の エイリアス が作れない 依存 依存 依存

Slide 8

Slide 8 text

1. IaC との組み合わせ ● App Runner の作成をアプリのライフサイクルに寄せるのは茨の道 ○ ECR と Aurora まで Terraform で作成 ○ 残りをアプリ側で、、、 Github Actions で全部設 定するのつらい これはインフラやろ

Slide 9

Slide 9 text

2. CloudFront との組み合わせ ● フロントエンドと一緒に CloudFront にぶら下げたい

Slide 10

Slide 10 text

2. CloudFront との組み合わせ ● App Runner のデフォルトドメイン問題 ○ パブリックエンドポイントモードの場合、外部からアクセスできるドメインが作成される ○ この経路はアクセスさせたくない

Slide 11

Slide 11 text

2. CloudFront との組み合わせ ● App Runner のデフォルトドメイン問題 a. CloudFront でカスタムヘッダを持たせて、そのリクエストだけを許可する b. WAFのIP制限でも実装は可能(アプリをどうしてもいじりたくない場合)

Slide 12

Slide 12 text

2. CloudFront との組み合わせ ● CloudFront のリクエストサイズ問題 ○ 大きいサイズのリクエストは CloudFront の上限に引っかかる可能性がある ○ App Runner のデフォルトドメインを使うか、 Lambda などにオフロードする

Slide 13

Slide 13 text

3. コンテナ起動時のトラブル ● 現状(2023.10時点)の App Runner の仕様 ○ 起動に失敗すると自動でロールバックされる ○ ロールバックしても起動できない場合、停止状態になる ○ 停止中は設定変更ができない ■ イメージソースも修正できない

Slide 14

Slide 14 text

3. コンテナ起動時のトラブル ● 構築直後初回起動でNW接続ができないケースがあった ○ 起動時にDBコネクションを貼りに行くもの、起動が早いものは特に要注意 ○ 永遠に起動できないことも DB接続がこける アプリ起動がこける 停止状態になると設定変 更できない

Slide 15

Slide 15 text

3. コンテナ起動時のトラブル ● ワークアラウンド ○ Exponential Backoff ○ 外部接続なしモード