Using S3 made easier.
Use S3 as you use your local file system with this simple wrapper over github.com/aws/aws-sdk-go.
- Uploading a file
- Downloading a file
- Deleting a file
- Getting a pre-signed link to the file
package main
import (
"github.com/IamFaizanKhalid/gos3"
"io/ioutil"
"log"
"os"
"time"
)
func main() {
// Getting client
client, err := gos3.NewClient(&gos3.Config{
Endpoint: "http://localhost:4566",
Region: "us-east-1",
AccessKeyId: "test",
SecretAccessKey: "test",
})
if err != nil {
log.Panicln(err)
}
// Select a bucket
bucket, err := client.SelectBucket("test-bucket")
if err != nil {
log.Panicln(err)
}
// Upload a file
file, err := os.Open("README.md")
if err != nil {
log.Panicln(err)
}
err = bucket.Upload(file, file.Name(), "backup")
if err != nil {
log.Panicln(err)
}
// Download a file
b, _, err := bucket.Download("backup/README.md")
if err != nil {
log.Panicln(err)
}
err = ioutil.WriteFile("README.md", b, os.ModePerm)
if err != nil {
log.Panicln(err)
}
// Get pre-signed link to the file
link, err := bucket.GetPreSignedLink("backup/README.md", time.Hour)
if err != nil {
log.Panicln(err)
}
log.Printf("Pre-signed link: %s\n", link)
// Delete the file
err = bucket.Delete("backup/README.md")
if err != nil {
log.Panicln(err)
}
}