node.js - 使用 nodeJs 中的 AWS lambda 函数提取 S3 Bucket 中的 zip 文件“错误:CEN 标头无效(签名错误)”
问题描述
我正在努力解压缩 AWS S3 中的内容。AWS S3 不提供直接解压 S3 存储桶中的 zip 文件夹的功能。我面临一个错误。附上上传代码截图。“错误:CEN 标头无效(签名错误)”
任何建议或指导将不胜感激。
我的节点 Js 代码上传 zip 文件:
const AWS = require('aws-sdk');
const s3 = new AWS.S3({signatureVersion: 'v4'});
exports.handler = async (event,context) => {
const bucket = 'bucket-name';
console.log(event)
const body = event.body;
const key=JSON.parse(body).key
console.log(key)
const params = {
Bucket: bucket,
Key: key,
ContentType: 'application/zip',
Expires: 60
};
try{
const signedURL = await s3.getSignedUrl('putObject', params);
const response = {
err:{},
body:"url send",
url:signedURL
};
return response;
}catch(e){
const response = {
err:e.message,
body:"error occured"
};
return response;
}};
我提取 zip 文件的 NodeJs 代码:
const S3Unzip = require('s3-unzip');
exports.s3_unzip = function(event, context, callback) {
const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
const bucketname = event.Records[0].s3.bucket.name;
console.log(event.Records[0].s3.object.key);
new S3Unzip({
bucket: bucketname,
file: filename,
deleteOnSuccess: true,
verbose: true,
}, function(err, success) {
if (err) {
callback(err);
} else {
callback(null);
}
});
}
解决方案
推荐阅读
- reactjs - 读取 URL 参数 NextJS
- python - 根据未来 X 天相同数据帧的未来值填充 Pandas 数据帧中的新列
- javascript - 使用解析的 SQL 值从 API 数组中查找缺失值
- python - 如何显示嵌套列表中的所有一个值?
- elasticsearch - 为什么 TieredMergePolicy 比其他更好?
- python - 如何使用Qt和python为'for'循环中的每个文字项制作“点击”插槽,而不是循环中的最后一项?
- c++ - 使用用户定义的显式函数对成对向量进行排序时 C++ 代码的运行时错误
- python - 通过 RTM API 与 Slack 通信的 Python 程序随机崩溃。如何在代码中捕获和纠正以避免崩溃?
- javascript - monorepo 应该在什么情况下使用 lerna 或 yarn 工作空间?
- ruby-on-rails - 过滤rails API json输出中的嵌套属性