可以通过设置GetObject/HeadObject的WithContext的Timeout参数来解决此问题。例子如下:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
params := &s3.GetObjectInput{
Bucket: aws.String(myBucket),
Key: aws.String(myKey),
}
req, resp := svc.GetObjectWithContext(ctx, params)
if err := req.Send(); err != nil {
panic(err)
}
buf := make([]byte, 1024)
for {
n, err := resp.Body.Read(buf)
if err != nil && err != io.EOF {
panic(err)
}
if n == 0 {
break
}
fmt.Println(string(buf[:n]))
}
在上面的代码中,timeout被设置为5秒。如果GetObject操作在5秒钟内无法完成,则会返回超时错误。
上一篇:aws-sdk-go-v2api错误InvalidPart:指定的一个或多个部分找不到。
下一篇:aws-sdk-mock-Mockings3.uploadisnotusingmockimplementation