code: func signRequestFunc(url, region string, credentialProvider *credentials.Credentials) wsclient.MakeRequestHookFunc {
  	return func(payload []byte) ([]byte, error) {
  		reqBody := bytes.NewReader(payload)
  
  		request, err := http.NewRequest("GET", url, reqBody)
  		if err != nil {
  			return nil, err
  		}
  
  		err = utils.SignHTTPRequest(request, region, "ecs", credentialProvider, reqBody)
  		if err != nil {
  			return nil, err
  		}
  
  		request.Header.Add("Host", request.Host)
  		var dataBuffer bytes.Buffer
  		request.Header.Write(&dataBuffer)
  		io.WriteString(&dataBuffer, "\r\n")
  
  		data := dataBuffer.Bytes()
  		data = append(data, payload...)
  
  		return data, nil
  	}
  }
docs: // signRequestFunc is a MakeRequestHookFunc that signs each generated request