【发布时间】:2021-04-16 00:03:44
【问题描述】:
我有一个需要将文件上传到 S3 的 AWS 无服务器应用程序。文件没有上传,也没有收到错误。当我使用没有 S3 连接的“sam local”在本地运行它时,结果相同。打印的最后一行是 'logger.debug('Uploading to S3', uploadParams);' 为什么你认为没有收到错误?
async function uploadFileToS3 (fileAttributes) {
// call S3 to retrieve upload file to specified bucket
const uploadParams = { Bucket: bucket, Key: '', Body: '' };
const fileStream = fs.createReadStream(fileAttributes.filepath);
fileStream.on('error', (err) => {
logger.error('File Error', err);
});
uploadParams.Body = fileStream;
uploadParams.Key = fileAttributes.filename;
logger.debug('Uploading to S3', uploadParams);
// call S3 to retrieve upload file to specified bucket
try {
const stored = await s3.upload(uploadParams).promise();
logger.info('Upload Success', stored);
} catch (err) {
logger.error('S3 upload error', err);
}
}
【问题讨论】:
-
您的 CloudWatch Logs 告诉您什么?具体来说,Lambda 函数是如何终止的?超时了吗?
-
您在使用 aws sdk 吗?如果是这样,请使用 putObject docs.aws.amazon.com/sdk-for-java/v1/developer-guide/…
-
@jarmod CloudWatch 中没有错误。 lambda 成功终止,没有错误,没有超时。
-
@Nonik 这是一个 nodejs 应用程序,而不是 java。亚马逊的例子说使用上传。
标签: amazon-web-services amazon-s3 lambda serverless