Package s3fs provides a S3 implementation for Go1.16 filesystem interface.
Since S3 is a flat structure, s3fs simulates directories by using prefixes and "/" delim. ModTime on directories is always zero value.
The implementation wraps aws sdk go s3 client.
const bucket = "my-bucket"
s, err := session.NewSession()
if err != nil {
log.Fatal(err)
}
s3fs := s3fs.New(s3.New(s), bucket)
// print out all files in s3 bucket.
_ = fs.WalkDir(s3fs, ".", func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
if d.IsDir() {
fmt.Println("dir:", path)
return nil
}
fmt.Println("file:", path)
return nil
})
go get github.com/jszwec/s3fs
- Go1.16+