【发布时间】:2022-11-24 01:21:20
【问题描述】:
我正在尝试在我的 lambda 函数中通过 aws-sdk 访问 S3。
import S3 from 'aws-sdk/clients/s3';
const s3 = new S3();
const { Contents: results } = await s3.listObjects({ Bucket: process.env.DOCUMENTS_BUCKET_NAME! }).promise()
我还使用 cdk deploy 命令成功部署了它。但是当我测试时,出现以下错误
2022-11-23T15:53:40.891Z undefined ERROR Uncaught Exception
{
"errorType": "Runtime.ImportModuleError",
"errorMessage": "Error: Cannot find module 'aws-sdk'\nRequire stack:\n- /var/task/index.js\n- /var/runtime/index.mjs",
"stack": [
"Runtime.ImportModuleError: Error: Cannot find module 'aws-sdk'",
"Require stack:",
"- /var/task/index.js",
"- /var/runtime/index.mjs",
" at _loadUserApp (file:///var/runtime/index.mjs:1000:17)",
" at async UserFunction.js.module.exports.load (file:///var/runtime/index.mjs:1035:21)",
" at async start (file:///var/runtime/index.mjs:1200:23)",
" at async file:///var/runtime/index.mjs:1206:1"
]
}
根据 documentation,aws-sdk 在运行时始终可用。
有谁知道我做错了什么?
我的尝试可在https://github.com/hhimanshu/typescript-cdk/tree/module_5_lambda_api获得
非常感谢
【问题讨论】:
-
基于您的代码正在调用旧版
listObjects方法而不是listObjectsV2并且正在使用.promise()功能这一事实,您似乎正在尝试使用 JavaScript SDK v2,所以const AWS = require('aws-sdk'); const s3 = new AWS.S3(); -
或者使用 here 中记录的 SDK v3。
标签: node.js amazon-web-services amazon-s3 aws-lambda aws-cdk