diff --git a/handler/quiz/get.go b/handler/quiz/get.go
index b88bde2955671872d7ad047c2be17541e450b491..acf7d55d71bdb786e37bca24af5a480fb62ecc12 100644
--- a/handler/quiz/get.go
+++ b/handler/quiz/get.go
@@ -113,7 +113,7 @@ func (m QuizHandlerImpl) GetQuizLink(w http.ResponseWriter, r *http.Request) {
 
 	payload.UpdateQuizToken = token[1]
 	payload.ID = id
-	response, err := m.QuizService.GetQuiz(payload)
+	response, err := m.QuizService.UpdateQuiz(payload)
 
 	if err != nil {
 		respErr, ok := err.(web.ResponseError)
diff --git a/repository/quiz/impl.go b/repository/quiz/impl.go
index 2b7bc2eb550416215d3a1dc43a777ba47c4e204c..8f593bc3868faa63cbce6c30d03c609757e4f301 100644
--- a/repository/quiz/impl.go
+++ b/repository/quiz/impl.go
@@ -80,15 +80,8 @@ func(q *QuizRepositoryImpl) NewQuiz(quiz quiz.Quiz) error {
 	return q.db.Create(&quiz).Error
 }
 
-func(q *QuizRepositoryImpl) GetQuizPath(quizId uuid.UUID) (string, error) {
-	result := quiz.Quiz{}
-	err := q.db.Where("id = ?", quizId).Find(&result).Error
-
-	if err != nil {
-		return "", err
-	}
-
-	return result.QuizPath, nil
+func(q *QuizRepositoryImpl) UpdateQuiz(quiz quiz.Quiz) error {
+	return q.db.Save(quiz).Error
 }
 
 func(q *QuizRepositoryImpl) Delete(quizId uuid.UUID) error {
diff --git a/repository/quiz/type.go b/repository/quiz/type.go
index c558fc0554b39c81c890d36150cd8d8ee80daf6a..72d7e0f981bdf17a73f227f14fa7442c61dd778a 100644
--- a/repository/quiz/type.go
+++ b/repository/quiz/type.go
@@ -12,7 +12,7 @@ type QuizRepository interface {
 	NewTake(quizId uuid.UUID, userEmail string) (uuid.UUID, error)
 	IsUserContributor(id string, email string) (bool, error)
 	NewQuiz(quiz quiz.Quiz) error
-	GetQuizPath(quizId uuid.UUID) (string, error)
+	UpdateQuiz(quiz quiz.Quiz) error
 	Delete(quizId uuid.UUID) error 
 	IsActiveTake(quizId uuid.UUID, userEmail string) (bool, error)
 	GetAllTake(quizId uuid.UUID, userEmail string) ([]quiz.QuizTake, error)
diff --git a/service/quiz/impl.go b/service/quiz/impl.go
index fb53a798c013f1fff684bb3eb6f6a999c9cc58b2..52befa22e6242479b64161e41ffe4867f0210b59 100644
--- a/service/quiz/impl.go
+++ b/service/quiz/impl.go
@@ -231,12 +231,12 @@ func (q QuizServiceImpl) NewQuiz(payload model.AddQuizRequestPayload) (*model.Li
 		return &model.LinkResponse{}, err
 	}
 
-	q.QuizRepository.NewQuiz(quiz.Quiz{
+	err = q.QuizRepository.NewQuiz(quiz.Quiz{
 		Id:           uuid.New(),
 		Name:         payload.Name,
 		CourseId:     payload.CourseID,
 		CreatorEmail: claim.Email,
-		QuizPath:     uploadLink,
+		QuizPath:     path,
 	})
 
 	if err != nil {
@@ -248,7 +248,7 @@ func (q QuizServiceImpl) NewQuiz(payload model.AddQuizRequestPayload) (*model.Li
 	return &model.LinkResponse{UploadLink: uploadLink}, nil
 }
 
-func (q QuizServiceImpl) GetQuiz(payload model.UpdateQuizRequestPayload) (*model.LinkResponse, error) {
+func (q QuizServiceImpl) UpdateQuiz(payload model.UpdateQuizRequestPayload) (*model.LinkResponse, error) {
 	// Validate Role
 	claim, err := q.TokenUtil.Validate(payload.UpdateQuizToken, token.Access)
 
@@ -263,21 +263,36 @@ func (q QuizServiceImpl) GetQuiz(payload model.UpdateQuizRequestPayload) (*model
 	}
 
 	// Get Quiz Detail
-	quiz, err := q.QuizRepository.GetQuizDetail(payload.ID)
+	prev, err := q.QuizRepository.GetQuizDetail(payload.ID)
 
 	if err != nil {
 		return &model.LinkResponse{}, err
 	}
 
 	// Validate Ownership
-	if err := q.isQuizContributor(quiz.CourseId, claim.Email); err != nil {
+	if err := q.isQuizContributor(prev.CourseId, claim.Email); err != nil {
+		return &model.LinkResponse{}, err
+	}
+
+	path := fmt.Sprintf("%s/%s.json", q.BucketQuizBasePath, strings.ReplaceAll(uuid.New().String(), "-", ""))
+	uploadLink, err := q.Storage.CreatePutSignedLink(context.Background(), path)
+
+	if err != nil {
+		q.Logger.Error("Some error happened when generate link")
+		q.Logger.Error(err.Error())
 		return &model.LinkResponse{}, err
 	}
 
-	uploadLink, err := q.QuizRepository.GetQuizPath(payload.ID)
+	err = q.QuizRepository.UpdateQuiz(quiz.Quiz{
+		Id:           prev.Id,
+		Name:         prev.Name,
+		CourseId:     prev.CourseId,
+		CreatorEmail: prev.CreatorEmail,
+		QuizPath:     path,
+	})
 
 	if err != nil {
-		q.Logger.Error("Some error happened when retrieving link")
+		q.Logger.Error("Some error happened when inserting new link")
 		q.Logger.Error(err.Error())
 		return &model.LinkResponse{}, err
 	}
diff --git a/service/quiz/type.go b/service/quiz/type.go
index 3f7d2a7f775b68713e3317d2d074aef624bc6129..229d724c96deee5750f3d16aca9c52fe7b5ec940 100644
--- a/service/quiz/type.go
+++ b/service/quiz/type.go
@@ -18,6 +18,6 @@ type QuizService interface {
 	GetSolutionQuiz(ctx context.Context, quizId uuid.UUID, user token.UserClaim) (*quiz.QuizDetail, error)
 	isQuizContributor(courseId string, email string) error
 	NewQuiz(payload model.AddQuizRequestPayload) (*model.LinkResponse, error)
-	GetQuiz(payload model.UpdateQuizRequestPayload) (*model.LinkResponse, error)
+	UpdateQuiz(payload model.UpdateQuizRequestPayload) (*model.LinkResponse, error)
 	DeleteQuiz(payload model.DeleteRequestPayload) error
 }