Node 似乎无法将 AWS DynamoDB 软件包导入项目



请注意:虽然我在这里提到了AWS SAM和DynamoDB,但我认为这更多的是一个AWS JavaScript SDK,或者甚至可能只是一个Node/NPM问题,因此,可能是任何有在AWS Lambda上编写Node/JavaScript应用程序经验的人都能回答的


我使用AWS SAM初始化一个"Hello World"风格的JavaScript Lambda repo,并使用它在API网关后面部署该Lambda。这实际上是非常酷的,几乎不需要做什么工作就可以正确配置所有内容。

我现在正在尝试修改样板TypeScript代码(本质上是TypeScript Lambda处理程序)来读取/写入DynamoDB表。

在Lambda处理器中,我添加了:

import { PutCommand } from "@aws-sdk/lib-dynamodb";

…并运行sam build,其中包括调用EsBuild进行编译/检查。这行代码失败,出现以下错误:

Build Failed
Error: NodejsNpmEsbuildBuilder:EsbuildBundle - Esbuild Failed: ✘ [ERROR] Could not resolve "@aws-sdk/lib-dynamodb"
app.ts:5:27:
5 │ import { PutCommand } from "@aws-sdk/lib-dynamodb";
╵                            ~~~~~~~~~~~~~~~~~~~~~~~

所以我查看我的package.json(AWS SAM为我生成的),我看到:

{
"name": "my-lambda",
"version": "1.0.0",
"description": "experimental",
"main": "app.js",
"repository": "<redacted>",
"author": "me myself and i",
"license": "MIT",
"scripts": {
"unit": "jest",
"lint": "eslint '*.ts' --quiet --fix",
"compile": "tsc",
"test": "npm run compile && npm run unit"
},
"devDependencies": {
"@types/aws-lambda": "^8.10.92",
"@types/jest": "^29.2.0",
"@types/node": "^18.11.4",
"@typescript-eslint/eslint-plugin": "^5.10.2",
"@typescript-eslint/parser": "^5.10.2",
"esbuild": "^0.14.14",
"esbuild-jest": "^0.5.0",
"eslint": "^8.8.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0",
"jest": "^29.2.1",
"prettier": "^2.5.1",
"ts-node": "^10.9.1",
"typescript": "^4.8.4"
}
}

所以,我认为这是有意义的,对吧?未安装aws-sdk/lib-dynamodb包。因此,从repo的根目录,我运行:

npm i @aws-sdk/lib-dynamodb

然后重新运行sam build…只是得到完全相同的错误。

为什么我得到这个错误,我能做些什么来修复它,使我的Lambda处理程序调用拉在AWS DynamdoDB JavaScript客户端的所有必要的组件?

保存客户端的包名为@aws-sdk/client-dynamodb

安装并导入。

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-dynamodb/index.html

相关内容

最新更新