在AWS Lambda中,getSignedUrl方法可以为任何文件类型创建可下载链接,包括.txt和.docx文件。问题可能是在配置getSignedUrl方法时出现了一些错误。
以下是一个示例代码,展示如何使用getSignedUrl方法为.txt文件创建可下载链接:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
exports.handler = async (event) => {
const bucketName = 'your-bucket-name';
const fileName = 'your-file.txt';
const params = {
Bucket: bucketName,
Key: fileName,
Expires: 3600 // 设置链接过期时间,单位为秒
};
try {
const signedUrl = await s3.getSignedUrlPromise('getObject', params);
console.log('Signed URL:', signedUrl);
return signedUrl;
} catch (error) {
console.error('Error:', error);
throw error;
}
};
确保替换代码中的'your-bucket-name'和'your-file.txt'为实际的S3存储桶名称和文件名称。
如果对.docx文件有效,但对.txt文件无效,可能是因为在S3存储桶中配置了不同的对象级别权限。请确保在S3存储桶中正确设置了对.txt文件的读取权限。您可以通过以下步骤检查和设置权限:
如果您仍然遇到问题,请确保Lambda函数具有足够的权限来执行getSignedUrl方法。您可以通过在Lambda函数的执行角色中添加适当的S3权限来解决此问题。