amplify add authの後、amplify pushをすると何度やってもLambda作成のところで以下のようなエラーが発生。
Resource handler returned message: "The runtime parameter of nodejs12.x is no longer supported for creating or updating AWS Lambda functions. We recommend you use the new runtime (nodejs18.x) while creating or updating functions. (Service: Lambda, S tatus Code: 400
これの解決方法はすでに色んなサイトで回答されていて、amplify cliを以下コマンドにて最新バージョンにすることでnodejs18.x以上のバージョンでLambdaを作成しようとしてくれて、問題なく作成される。
npm install -g @aws-amplify/cli
ところが自分の場合は会社のプロキシ設定の関係で、amplifyを最新バージョンにあげると、amplifyコマンドで以下エラーが発生し、何もできなくなる。
Downloading release from https://package.cli.amplify.aws/12.10.3/amplify-pkg-win-x64.tgz Error fetching release: Request failed with status code 407
こんなポストも見つけたので、
amplify-cli、プロキシ越しに使おうとすると環境変数http_proxyじゃなくてHTTP_PROXYじゃないといけないみたいでドハマリした...
— wadahiro (@wadahiro) 2020年9月9日
大文字で環境変数登録してみたけど効果なし。
set HTTP_PROXY=http://username:password@10.0.0.1:8888 set HTTPS_PROXY=http://username:password@10.0.0.1:8888
仕方なく古いバージョンを指定してinstallし直す。
npm uninstall -g @aws-amplify/cli npm install -g @aws-amplify/cli@7.6.24
するともちろん同じエラーが発生。
Resource handler returned message: "The runtime parameter of nodejs12.x is no longer supported for creating or updating AWS Lambda functions. We recommend you use the new runtime (nodejs18.x) while creating or updating functions. (Service: Lambda, S tatus Code: 400
この環境で解決するしかなので、原因を考えてみる。まず「amplify push」は「amplify add auth」で生成されたCloudFormationのテンプレートをクラウド側で実行する動きをする認識。なので、CloudFormation内のLambda関数部分で「nodejs12」を指定しているところがあるはず。 あった!ここが原因なので、ここを「nodejs18.x」に修正してやるとこのエラーは解消した。
普通はamplify cliのバージョンを最新にするだけで解消するのであまりないケースだとは思いますが、もし同じような境遇の方がいれば参考になれば幸いです。