切换到 18.x 后,Lambda 函数无法加载 AWS sdk

PHP*_*Lol 8 amazon-web-services node.js aws-lambda aws-sdk-nodejs

我将 Lambda 函数从 node12.x 升级到了 node18.x

该代码在 12.x 上运行得很好,切换到 18.x 后,我无法再包含 AWS sdk:

我曾经通过简单地输入以下内容来包含它:

var AWS = require('aws-sdk');
Run Code Online (Sandbox Code Playgroud)

我现在收到这个错误

"Error: Cannot find module 'aws-sdk'
Run Code Online (Sandbox Code Playgroud)

我想如果我能让AWS sdk正确加载该功能应该没问题,有什么想法吗?

谢谢

fed*_*nev 16

Node.js 18 Lambda 运行时预加载了AWS SDK for JS v3

早期的运行时具有SDK v2

当然,您仍然可以将 SDK v2 与 Node.js 18 运行时结合使用。您只需使用 Lambda 代码将客户端打包为依赖项。


v2 SDK 的aws-sdk包(预加载在 14.x、16.x Lambda Node.js 运行时)包含每个客户端。v3 服务客户端(在 18.x 上预加载)在单独的包中模块化@aws-sdk/client-[something]。以下是用于获取 S3 对象的 v3 示例导入:

// v3
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3"
Run Code Online (Sandbox Code Playgroud)

请参阅SDK v3 文档中的入门指南。


And*_*tos 1

在 lambda 的 package.json 文件中安装 aws-sdk。

npm install aws-sdk@2
Run Code Online (Sandbox Code Playgroud)