はじめに
Athenaが突然使えなくなりました。
解決にそれなりの労力を要したので供養も兼ねて記事にします。
エラー発生
普段、DynamoDB のデータを Athena を通じてデータ取得する業務を行っているのですが、ある日で突然 Athena がエラーを吐くようになりました。
簡単なクエリにすら応えてくれません。
SELECT * FROM connector.default."xxx"
GENERIC_USER_ERROR: Encountered an exception[java.lang.NullPointerException] from your LambdaFunction[arn:aws:lambda:ap-northeast-XXXXX:function:demo] executed in context[S3SpillLocation{bucket='testathenadynamodbconnector', key='athena-spill/XXXXX', directory=true}] with message[java.lang.NullPointerException]
原因と解決
原因
同環境で動いているほぼ同じ DB と比べてみると、Boolean 型のテーブルに null が含まれていたことが発覚しました。
AppSyncからDynamoDBのBoolean列にNullが登録できてしまい、そのレコードをDynamoDBでは表示できたが、Athenaでは読み込む際に失敗していたことに起因していました。
解決
Athena が参照していたテーブルから該当の Null を削除したら、いつも通り Athena は答えてくれるようになりました。
参考記事