【发布时间】:2023-01-20 21:44:00
【问题描述】:
我有一个 lambda 函数(运行时 Node.js 16.x),我需要在其中使用 Node.js 列出 S3 存储桶中的对象。 但是由于某种原因, s3.listObjects() 没有做任何事情。我似乎无法弄清楚为什么。代码如下:
const AWS = require('aws-sdk');
const https = require('https');
exports.handler = async (event, context, callback) => {
const awsOptions = {
region: "region"
};
const s3 = new AWS.S3(awsOptions);
const params = {
Bucket: 'bucketName',
Delimiter: '/',
Prefix: 'myPrefix/'
};
console.log("Before listing")
s3.listObjects(params, function(err, data) {
console.log("Listing objects")
if (err) console.log(err, err.stack); // an error occurred
else console.log(data);
});
console.log("After listing")
}
当用上面的代码测试 lambda 时,它只会打印
Before listing
After listing
就好像 listObjects() 从未被调用过。这是压缩 s3 对象并上传到存储桶的功能的一部分。如果我硬编码对象键,我可以毫无问题地获取对象、创建 zip 和上传 zip 文件。但是如果我需要通过 s3.ListObject() 获取对象键,我会遇到上面的问题,其中 listObjects() 没有做任何事情。 有人可以指导我解决问题。任何帮助深表感谢。
【问题讨论】:
-
会不会是 S3 超时了?
标签: node.js amazon-s3 aws-lambda