表題の環境でハマったのでメモとして残しておく。
■ 環境
- Node.js 8.10
- AWS Lambda
- AWS Athena
■ node
新規でLambdaの関数を”一から作成“で作成した際に、下記のコードが作成されたのでこれを元に処理を追加していった。
exports.handler = async (event) => {
// TODO implement
return 'Hello from Lambda!'
};
LambdaからAthenaに`startQueryExecution`でクエリを実行させ、S3にCSVが作成された、満足だ、と安心し更に実装を進めていたら、`startQueryExecution`の箇所はほぼ修正していないのに実行ができなくなってしまった…。その後、ファイルのversionを戻しても実行がされない…。`listNamedQueries`を実行してみても結果を得られない…。
- 実行できた時点のversionを再実行
- `startQueryExecution`を`listNamedQueries`にして実行
- 関数を新規に作成して実行
ここまで実行してもやはり実行はできなかった。エラーも出ていない、CloudWatchログで見ても実行時のエラーは出ていない。手詰まり…となったがふと思いたってランタイムを”Node.js 6.10“にして実行してみた。実行してみるとエラーが発生。`async`がダメというような内容であった。
従って、上記のサンプルでいうと下記のように修正した。
exports.handler = (event) => {
// TODO implement
return 'Hello from Lambda!'
};
実行できてしまった…。`listNamedQueries`も`startQueryExecution`も問題なく実行ができた。
もしや?と思いこのソースのままランタイムを”Node.js 8.10“に変更しても問題なく実行ができた。
変な箇所にハマって時間をくってしまったので原因を深く追求するのはやめて実装を進めることにする。
以上。