检索刚刚上传的文件后,AWS s3 NoSuchKey错误

时间:2019-12-04 16:07:12

标签: amazon-web-services amazon-s3

我将文件上传到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)
        })
    }

1 个答案:

答案 0 :(得分:0)

上载后S3 GetObject失败的第一个原因是在上载完成之前 实际发生了GetObject请求,这在异步JavaScript中很容易做到。