There's a nice example in the aws-mobile-react-native-starter repo.
You just need to read the file, and then you can upload it.
return files.readFile(imagePath)
.then(buffer => Storage.put(key, buffer, { level: 'private', contentType: result.type }))
.then(fileInfo => ({ key: fileInfo.key }))
.then(x => console.log('SAVED', x) || x);
To read the file they've used react-native-fetch-blob:
readFile(filePath) {
return RNFetchBlob.fs.readFile(filePath, 'base64').then(data => new Buffer(data, 'base64'));
}