我将文件上传到s3存储桶,并尝试在上传后立即读取文件。我大多数时候会收到“错误NoSuchKey:指定的键不存在”。我使用控制台检查存储桶,并且文件实际上存在。
刷新页面后,便可以读取文件。 Aws地区是美国东部(弗吉尼亚北部)。 文件已上传并带有私人读取。
export function uploadFile(absolutePath: string, fileBuffer: Buffer, callback: (err, result) => void) {
try {
let uploadParams: awsSdk.S3.PutObjectRequest = {
Bucket: cfg.aws[process.env.NODE_ENV].bucket,
Key: absolutePath,
Body: fileBuffer,
ACL: 'private',
CacheControl: 'public, max-age=2628000'
}
s3.upload(uploadParams, function (err, result) {
if (err) {
Util.logError('Aws Upload File', err)
}
return callback(err, result)
})
} catch (err) {
Util.logError('Aws Upload File', err)
return callback(err, null)
}
}
export function obtainObjectOutput(absolutePath: string, callback: (err, result: awsSdk.S3.GetObjectOutput) => void) {
let getParaams: awsSdk.S3.GetObjectRequest = {
Bucket: cfg.aws[process.env.NODE_ENV].bucket,
Key: absolutePath
}
s3.getObject(getParaams, (error, result) => {
(error) ? callback(error, null) : callback(null, result)
})
}
答案 0 :(得分:0)
上载后S3 GetObject失败的第一个原因是在上载完成之前 实际发生了GetObject请求,这在异步JavaScript中很容易做到。