Magicode logo
Magicode
1
3 min read

AWS App Runnerでネットワーク周りのエラーが出た時のトラブルシューティング

https://cdn.apollon.ai/media/notebox/38b5e9a9-53bf-4a72-b23a-cc6062ab6500.jpeg

この記事の目的

筆者のつとめる会社では本番環境でApp Runnerを使っている。2022年5月現在App Runnerを実践で使っている例はほとんどないため、直面したエラーなどはこれからのApp Runnerユーザにきっと役立つはずだ。今回の記事では特にネットワーク周りのエラーについてまとめる。何かあればコメントで教えてほしい。

そもそもApp Runnerとは

App Runnerとは、2021年5月にリリースされた、AWSのherokuライクなマネージド・サービスである。
アプリケーションを超かんたんに公開できるものだ。機能としては
App Runner = ECS on Fargate(コンピューティング) + ALB(ロードバランサー) + Code Pipeline(CI/CD) + Cloud Watch(Log/監視) + ACM(証明書) といったところだろうか。
まず、App Runnerのネットワークに関しては、VPCコネクタを使うかどうかの2通りがある。

VPCコネクタを使っていない時のトラブルシューティング

エラー1. RDSやElastiCacheなどのVPC内のリリースにアクセスできない。

「ヘルスチェックは通るが。RDSやElastiCacheに接続できない。」といったケース。

原因

App RunnerはAWSマネージドなVPCで走るため、特に設定をしないと、あなたのVPC内のリリースにはアクセスできない。これでRDSやElastiCacheに接続できなかったり、タイムアウトになったりする。

解決策: VPCコネクタを使う。

2022年2月のアプデでリリースされたVPCコネクタを使う。これだけ。VPCコネクタとはだが、これに関してはClassmethodさんの記事でよく解説されている。(「[アップデート] AWS App RunnerからVPCリソースへのアクセスが可能になりました!」) しかしVPCコネクタを使うとApp Runnerはインターネットに通信できなくなる。これはエラー2で述べる。

VPCコネクタを使っている時のトラブルシューティング

エラー2. App Runnerのアプリがインターネットと通信できない

原因

「VPCコネクタを使ってRDSやElastiCacheにはアクセスできるようになったが、今度はインターネットとつながらず、S3やDynamoDB、SQSといったAWSサービス、StripeやSendgridのような外部APIとうまく接続できなくなった。」というケースだ。

解決策A: NATゲートウェイを使う

(高い、いろいろ解決) VPCコネクタを使ってApp Runnerを走らせている時、App RunnerはあなたのVPCのプライベートサブネットで走っている状況と似ている。そのためNAT Gatewayを使ってインターネットと通信できるようにする必要がある。その設定の仕方についてはこちらを参考にされたいが、ざっくりNATゲートウェイを作成ルートテーブルにNATゲートウェイへのルーティング追加するでよい。

解決策B: VPCエンドポイントを使う

(安い、ユースケース限定的) これは「AWSリソースのみに通信できればよく、インターネットと通信はしなくてもよい」時に使える。ご存知のようにNATゲートウェイはとても高いので、これで済むならこれで済ませたい。しかしインターネットと通信はできないことに留意されたい。

エラー3. App RunnerのアプリがRDSやElastiCacheに弾かれる。

「VPCコネクタを設定したのに、RDSやElastiCacheとうまく接続できない。なぜかタイムアウトになる。」というケース。(実際に筆者が困って時間を使った部分だ。)

原因

様々原因はあると思うが、今回筆者の原因を述べる。原因はセキュリティグループだった。既存のサービスで、App Runnerに変えた途端にElastiCache上のRedisにうまくつながらなくなった。

解決策: セキュリティグループを設定、許可する

VPCコネクタにはSecurityGroupsが設定できる。このセキュリティグループをRDSやElastiCacheのインバウンドで許可してあげると動いた。

まとめ

個人的に、マネージドサービス大好きなので、App Runnerの今後にはとても期待している。 GitHubのIssueでロードマップが公開されているので見てみると面白い。

Discussion

コメントにはログインが必要です。