@Override
    public void upload(String path, InputStream payload, long payloadSize) {
        try {
            ObjectMetadata objectMetadata = new ObjectMetadata();
            objectMetadata.setContentType(CONTENT_TYPE);
            objectMetadata.setContentLength(payloadSize);
            PutObjectRequest request =
                    new PutObjectRequest(bucketName, path, payload, objectMetadata);
            s3Client.putObject(request);
        } catch (SdkClientException e) {
            String msg =
                    String.format(
                            "Error uploading to S3 - path:%s, payloadSize: %d", path, payloadSize);
            LOGGER.error(msg, e);
            throw new TransientException(msg, e);
        }
    }
Uploads the payload to the given s3 object key. It is expected that the caller retrieves the
object key using {@link #getLocation(Operation, PayloadType, String)} before making this
call.

@param path the s3 key of the object to be uploaded
@param payload an {@link InputStream} containing the json payload which is to be uploaded
@param payloadSize the size of the json payload in bytes
awss3-storage/src/main/java/com/netflix/conductor/s3/storage/S3PayloadStorage.java