Revised: Don't require the seek
call:
s3_r = boto3.resource('s3')
profile = source_image.profile.copy()
with rasterio.io.MemoryFile() as stack:
with stack.open(**profile) as stack_out:
stack_out.write(source_image.read(1), 1)
s3_r.Object(<my-bucket>, <my-key>).upload_fileobj(stack)
For reference, doing:
s3_r = boto3.resource('s3')
profile = source_image.profile.copy()
with rasterio.io.MemoryFile() as stack:
profile['driver'] = 'GTiff'
with stack.open(**profile) as stack_out:
stack_out.write(source_image.read(1), 1)
s3_r.Object(<my-bucket>, <my-key>).upload_fileobj(stack)
results in a correctly geocoded GeoTiff. Appears it is an issue with .jp2
s and Profiles/MemoryFiles.