diff --git a/weed/iamapi/iamapi_management_handlers.go b/weed/iamapi/iamapi_management_handlers.go
index 994224688..d3b1e7b28 100644
--- a/weed/iamapi/iamapi_management_handlers.go
+++ b/weed/iamapi/iamapi_management_handlers.go
@@ -204,6 +204,7 @@ func (iama *IamApiServer) CreatePolicy(s3cfg *iam_pb.S3ApiConfiguration, values
 	return resp, nil
 }
 
+// https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutUserPolicy.html
 func (iama *IamApiServer) PutUserPolicy(s3cfg *iam_pb.S3ApiConfiguration, values url.Values) (resp PutUserPolicyResponse, err error) {
 	userName := values.Get("UserName")
 	policyName := values.Get("PolicyName")
@@ -212,15 +213,21 @@ func (iama *IamApiServer) PutUserPolicy(s3cfg *iam_pb.S3ApiConfiguration, values
 	if err != nil {
 		return PutUserPolicyResponse{}, err
 	}
+	isFound := false
 	policyDocuments[policyName] = &policyDocument
 	actions := GetActions(&policyDocument)
 	for _, ident := range s3cfg.Identities {
-		if userName == ident.Name {
-			for _, action := range actions {
-				ident.Actions = append(ident.Actions, action)
-			}
-			break
+		if userName != ident.Name {
+			continue
+		}
+		isFound = true
+		for _, action := range actions {
+			ident.Actions = append(ident.Actions, action)
 		}
+		break
+	}
+	if !isFound {
+		return resp, fmt.Errorf("%s: the user with name %s cannot be found", iam.ErrCodeNoSuchEntityException, userName)
 	}
 	return resp, nil
 }