Partially implements #92. The Go CDK has well-maintained implementations for accessing objects stores from S3, Azure, and GCS via a io/fs.Fs-like interface. However, their file interface doesn't support the io.ReaderAt interface or the Seek() function that Iceberg-Go requires for files. Furthermore, the File components are private. So we copied the wrappers and implement the remaining functions inside of Iceberg-Go directly.
In addition, we add support for S3 Read IO using the CDK, providing the option to choose between the existing and new implementation using an extra property.
Next PR will implement write IO, at which point we will drop the non-CDK S3 IO implementation.
Partially implements #92. The Go CDK has well-maintained implementations for accessing objects stores from S3, Azure, and GCS via a
io/fs.Fs
-like interface. However, their file interface doesn't support theio.ReaderAt
interface or theSeek()
function that Iceberg-Go requires for files. Furthermore, the File components are private. So we copied the wrappers and implement the remaining functions inside of Iceberg-Go directly.In addition, we add support for S3 Read IO using the CDK, providing the option to choose between the existing and new implementation using an extra property.
Next PR will implement write IO, at which point we will drop the non-CDK S3 IO implementation.