fix: proxyHandler — timeout 60s, валидация key по s3Prefix; readyz — timeout 5s
This commit is contained in:
+11
-2
@@ -300,8 +300,15 @@ func proxyHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
http.Error(w, "Missing key param", http.StatusBadRequest)
|
http.Error(w, "Missing key param", http.StatusBadRequest)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if !strings.HasPrefix(key, s3Prefix+"/") && !strings.HasPrefix(key, "docs/") {
|
||||||
|
http.Error(w, "Forbidden", http.StatusForbidden)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
obj, err := s3Client.GetObject(context.Background(), bucketName, key, s3.GetObjectOptions{})
|
ctx, cancel := context.WithTimeout(r.Context(), 60*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
obj, err := s3Client.GetObject(ctx, bucketName, key, s3.GetObjectOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error getting object %s/%s: %v", bucketName, key, err)
|
log.Printf("Error getting object %s/%s: %v", bucketName, key, err)
|
||||||
http.Error(w, "File not found", http.StatusNotFound)
|
http.Error(w, "File not found", http.StatusNotFound)
|
||||||
@@ -479,7 +486,9 @@ func healthzHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func readyzHandler(w http.ResponseWriter, r *http.Request) {
|
func readyzHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
_, err := s3Client.BucketExists(context.Background(), bucketName)
|
ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
_, err := s3Client.BucketExists(ctx, bucketName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
msg := fmt.Sprintf("s3 unreachable: %v", err)
|
msg := fmt.Sprintf("s3 unreachable: %v", err)
|
||||||
log.Printf("readyz: %s", msg)
|
log.Printf("readyz: %s", msg)
|
||||||
|
|||||||
Reference in New Issue
Block a user