AWS Lambda - 找不到模块 'csvtojson'
AWS Lamda- Cannot find module 'csvtojson'
我正在使用 AWS Lambda 服务从上传到 S3 存储桶的 CSV 文件中读取内容并将其转换为 JSON 格式。我在 csv 到 json 阶段陷入困境。
const AWS = require('aws-sdk');
const csvtojson = require('csvtojson');
const S3 = new AWS.S3();
exports.handler = async (event,content,callback) => {
console.log(' inside trigger ')
const src_bkt = event.Records[0].s3.bucket.name;
const src_key = event.Records[0].s3.object.key;
try {
const params = {Bucket: src_bkt, Key:src_key}
// get csv file and create stream
const stream = S3.getObject(params).createReadStream();
// convert csv file (stream) to JSON format data
const json = await csvtojson().fromStream(stream);
console.log(json);
}
catch (err) {
console.log(JSON.stringify(err))
return {
statusCode: err.statusCode || 400,
body: err.message || JSON.stringify(err.message)
}
}
};
错误信息:
"errorType": "Runtime.ImportModuleError",
"errorMessage": "Error: Cannot find module 'csvtojson'",
我尝试在 lambda 上转换节点模块以检查运气。请分享任何建议。
您需要将 lambda 打包并部署为 zip 文件。该文件应包含具有处理函数的 javascript 文件以及具有所有依赖项的 node_modules
目录。
Zip 文件结构。
handler.js
node_modules/
....................../csvtojson
如何设置项目
- 使用
npm init
为例如 my-project
初始化一个项目文件夹,它将为您创建一个 package.json 文件
- 在
handler.js
中创建处理函数
使用 npm install csv2json --save
安装 csv2json,现在您将看到创建了一个 node_modules
目录
zip my-project
目录,所以你有 my-project.zip,zip 应该直接包含 handler.js
和 node_modules
参考:
https://aws.amazon.com/premiumsupport/knowledge-center/lambda-deployment-package-nodejs/
希望这对您有所帮助。
我正在使用 AWS Lambda 服务从上传到 S3 存储桶的 CSV 文件中读取内容并将其转换为 JSON 格式。我在 csv 到 json 阶段陷入困境。
const AWS = require('aws-sdk');
const csvtojson = require('csvtojson');
const S3 = new AWS.S3();
exports.handler = async (event,content,callback) => {
console.log(' inside trigger ')
const src_bkt = event.Records[0].s3.bucket.name;
const src_key = event.Records[0].s3.object.key;
try {
const params = {Bucket: src_bkt, Key:src_key}
// get csv file and create stream
const stream = S3.getObject(params).createReadStream();
// convert csv file (stream) to JSON format data
const json = await csvtojson().fromStream(stream);
console.log(json);
}
catch (err) {
console.log(JSON.stringify(err))
return {
statusCode: err.statusCode || 400,
body: err.message || JSON.stringify(err.message)
}
}
};
错误信息: "errorType": "Runtime.ImportModuleError", "errorMessage": "Error: Cannot find module 'csvtojson'",
我尝试在 lambda 上转换节点模块以检查运气。请分享任何建议。
您需要将 lambda 打包并部署为 zip 文件。该文件应包含具有处理函数的 javascript 文件以及具有所有依赖项的 node_modules
目录。
Zip 文件结构。
handler.js
node_modules/
....................../csvtojson
如何设置项目
- 使用
npm init
为例如my-project
初始化一个项目文件夹,它将为您创建一个 package.json 文件 - 在
handler.js
中创建处理函数
使用
npm install csv2json --save
安装 csv2json,现在您将看到创建了一个node_modules
目录zip
my-project
目录,所以你有 my-project.zip,zip 应该直接包含handler.js
和node_modules
参考:
https://aws.amazon.com/premiumsupport/knowledge-center/lambda-deployment-package-nodejs/
希望这对您有所帮助。