Should you provide ```input``` to ```BlobBuilder.payload```?  Uses of signed URLs do not usually have the payload during signing since an external client provides it.  Instead you could attach the payload afterwards via ```putRequest.setPayload(input)``` or ```client.put(putRequest, input)```.