首页 > 解决方案 > 生成 AWS s3 Presigned URL 时出现超时错误

问题描述

我创建了一个生成预签名 URL 以将对象上传到 AWS S3 的路由。它最初工作,但最近,它返回一个超时错误。 这是我的控制器代码:

async (req, res, next)=>{
    const BUCKET = req.params.bucket;
    const KEY = 'myKey_'+ uuid.v4();
    const EXPIRATION = 60 * 60 * 1000;
    let signedUrl; 
    
    try{
    // Also have a configuration file ~.aws/.credentials
      const s3 = new S3({
        accessKeyId: process.env.AWS_ACCESS_KEY,
        secretAccessKey: process.env.AWS_SECRET_KEY,
        region: 'ap-south-1'
      });
      
    // creating a s3 presigner obj
    const signer = new S3RequestPresigner({ ...s3.config });
    
    // creating file upload request
    const AWSUploadRequest = await createRequest(s3, new PutObjectCommand({ 
      Bucket: BUCKET,
      Key: KEY
     }));
    
    const expire = new Date(Date.now() + EXPIRATION);
    
    // creating & formating presigned URL
    signedUrl = formatUrl(await signer.presign(AWSUploadRequest, expire));
 console.log(`Generated Signed URL: ${signedUrl}`);
    }catch(err){
      console.log(`Error creating presigned url ${err}`);
      return next(
        new ErrorResponse(
          `Error while generating aws s3 presigned url`,
          500
        )
      )}

    res.status(200).json({
        signedUrl
    })
}

这是我的日志:

AWSUploadReq: {"method":"PUT","hostname":"s3.ap-south-1.amazonaws.com","query":{"x-id":"PutObject"},"headers":{"Content-Type":"application/octet-stream","user-agent":"aws-sdk-nodejs-v3-@aws-sdk/client-s3/1.0.0-rc.7 win32/v10.15.3"},"protocol":"https:","path":"/dammnn/myKey_file-c6f198d6-9e91-4892-8c88-8a49e15406c1"}
Error creating presigned url Error: TimeoutError

关于请求超时的原因非常模糊。寻找一些相同的指导。谢谢。

标签: amazon-web-servicesamazon-s3timeoutpre-signed-url

解决方案


推荐阅读