【问题标题】:Error: Cannot find module 'aws-sdk' in NodeJS AWS Lambda Function错误:在 NodeJS AWS Lambda 函数中找不到模块 \'aws-sdk\'
【发布时间】: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"
    ]
}

根据 documentationaws-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


【解决方案1】:

谢谢@jarmod,我需要以下依赖项

@aws-sdk/client-s3

我对修复的提交可用here

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 2019-09-12
    • 2019-05-03
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2019-11-27
    相关资源
    最近更新 更多