web-dev-qa-db-ja.com

レイヤーを使用してAWS Lambda関数でNPMパッケージにアクセスしようとしている "Runtime.ImportModuleError"

AWS Lambda関数でNPMパッケージ「要求」を使用したいのですが。

ここでこの記事で概説されている手順に従います。 https://medium.com/@anjanava.biswas/nodejs-runtime-environment-with-aws-lambda-layers- F3914613E20E

このようなディレクトリ構造を作成しました。

nodejs
│   package-lock.json
│   package.json
└───node_modules

私のpackage.jsonは次のようになります。

{
  "name": "my-package-name",
  "version": "1.0.0",
  "description": "whatever",
  "author": "My Name",
  "license": "MIT",
  "dependencies": {
    "request": "^2.88.0"
  }
}

私が記事から私が言うことができる限り、私が上記のことをする必要があるのはnpm i実行され、ディレクトリを整理し、それをレイヤーとしてアップロードして、そのレイヤーをLambda関数に追加します。

screenshot

私はそのすべてをやりました、しかし私が私の関数をテストしようとしたときに私が得るのはこれだけです:

{
  "errorType": "Runtime.ImportModuleError",
  "errorMessage": "Error: Cannot find module 'request'\nRequire stack:\n- /var/task/index.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js",
  "trace": [
    "Runtime.ImportModuleError: Error: Cannot find module 'request'",
    "Require stack:",
    ...

...レイヤーが追加されたまさに追加されたかのように。エラーは、レイヤが追加されているかどうかだけでまったく同じです。解決する必要があるいくつかの種類の権限問題がある場合は、そのことを示す記事には何もありません。

私の.zipファイルに最上位ディレクトリ "nodejs"またはその内容が含まれているかどうかのように、いくつかの異なることを試しました。このような"main": "index.js",ファイルを使用して、package.jsonindex.jsを追加しました。

export.modules.request = require('request');

... ALLにはありません。

何が行方不明ですか?

4
kshetline

通常、その中のフォルダ/ファイルの名前で行う必要があります。そしてそれらのファイルが他の場所に言及されているならば、それはパーコレートであり、そこにも文句を言うつもりです。フォルダ構造を徹底的にチェックするだけで、泥棒をキャッチすることができます。私は把握するために一日に苦労しました、それは愚かな能動でした。

1
Arjun Kalidas