エンジニアのはしがき

プログラミングの日々の知見を書き連ねているブログです

ASP.NET CoreがLambda上で何故か動かず四苦八苦した

f:id:tansantktk:20210221134731p:plain

何が起こったか

フロントエンドから呼ばれるAPIサーバをAWS Lambda(ASP.NET Core)で構築していたのですが、 とあるリリース作業時に最新バージョンをLambdaへデプロイした後、APIサーバが常にエラーを返すようになってしまいました。

原因

ASP.NET Coreの環境設定用ファイルのアクセス権限が所有者以外全て拒否されていた🤤

ASP.Net Coreではappsettings.jsonを用意して、環境設定を読み込めるのですが このファイルのアクセス権限が何故か書き換わってしまっていました。 リリース作業途中に環境設定ファイルをGoogle Drive等に一時的に移動したり戻したりといったことをしたせいかもしれません。

実際にターミナルで調べてみると以下のようにアクセス権限が無いことが分かったので、アクセス権限を付与し直してデプロイすることで解決しました。 原因は物凄く単純なことだったのですが、CloudWatchのエラーログを見ても原因特定が難しく、1時間程溶かしてしまいました…。

$ ll

# 所有者以外のアクセス権限が無い
-rw------- 1 ******* 197609    850 Jan 17 12:59 appsettings.json

# アクセス権限を付与
$ chmod 666 appsettings.json

# Lambda上でもアクセス可能になった
-rw-rw-rw- 1 ******* 197609    850 Jan 17 12:59 appsettings.json