AWS SDK - Go (Golang)

Learn how to use the AWS SDK for Go (Golang) with Filebase.

What is AWS SDK - Go?

AWS SDKs (software development kits) help simplify coding and application development by supporting and providing code objects for use with S3-compatible services. There are a variety of different AWS SDKs, each for a different coding language. This guide covers AWS SDK - Go.

Read below to learn how to use the AWS SDK for Go with Filebase.

Prerequisites:

Create a Bucket

The following code example creates a new Filebase bucket. Replace the following values in the code to match your configuration:

  • filebase-access-key: Your Filebase Access Key

  • filebase-secret-key: Your Filebase Secret Key

  • new-filebase-bucket: The Intended New Bucket Name

Bucket names must be unique across all Filebase users, be between 3 and 63 characters long, and can contain only lowercase characters, numbers, and dashes.

Buckets created through this method will be automatically created on the IPFS network.

package main

import (
	"fmt"
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/service/s3"
)

func main() {
//// create a configuration
	s3Config := aws.Config{
	Credentials:      credentials.NewStaticCredentials("filebase-access-key", "filebase-secret-key", ""),
	Endpoint:         aws.String("https://s3.filebase.com"),
	Region:           aws.String("us-east-1"),
	S3ForcePathStyle: aws.Bool(true),
}

goSession, err := session.NewSessionWithOptions(session.Options{
	Config:  s3Config,
	Profile: "filebase",
})

// check if the session was created correctly.

if err != nil {
	fmt.Println(err)
}

// create a s3 client session
s3Client := s3.New(goSession)

// set parameter for bucket name
bucket := aws.String("new-filebase-bucket")

// create a bucket
_, err = s3Client.CreateBucket(&s3.CreateBucketInput{
	Bucket: bucket,
})

// print if there is an error
if err != nil {
	fmt.Println(err.Error())
return
}
}

Upload an Object

The following code example uploads an object to the specified bucket. Replace the following values in the code to match your configuration:

  • filebase-access-key: Your Filebase Access Key

  • filebase-secret-key: Your Filebase Secret Key

  • bucket-name: Your Filebase Bucket Name

  • /path/to/object/to/upload: The path to the file to upload

  • object-name: The name of the object to upload

package main

import (
	"fmt"
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/service/s3"
	"os"
)

func main() {
//// create a configuration
	s3Config := aws.Config{
	Credentials:      credentials.NewStaticCredentials("filebase-access-key", "filebase-secret-key", ""),
	Endpoint:         aws.String("https://s3.filebase.com"),
	Region:           aws.String("us-east-1"),
	S3ForcePathStyle: aws.Bool(true),
}

// create a new session using the config above and profile
goSession, err := session.NewSessionWithOptions(session.Options{
	Config:  s3Config,
	Profile: "filebase",
})

// check if the session was created correctly.

if err != nil {
	fmt.Println(err)
}

// create a s3 client session
s3Client := s3.New(goSession)

//set the file path to upload
file, err := os.Open("/path/to/object/to/upload")
if err != nil {
	fmt.Println(err.Error())
return
}

defer file.Close()
// create put object input
	putObjectInput := &s3.PutObjectInput{
	Body:   file,
	Bucket: aws.String("bucket-name"),
	Key:    aws.String("object-name"),
}

// upload file
_, err = s3Client.PutObject(putObjectInput)

// print if there is an error
if err != nil {
	fmt.Println(err.Error())
return
}
}

Download an Object

The following code example downloads an object from the specified bucket. Replace the following values in the code to match your configuration:

  • filebase-access-key: Your Filebase Access Key

  • filebase-secret-key: Your Filebase Secret Key

  • bucket-name: Your Filebase Bucket Name

  • object-name: The name of the object to download

package main

import (
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/service/s3"
)

func main() {
//// create a configuration
	s3Config := aws.Config{
	Credentials:      credentials.NewStaticCredentials("filebase-access-key", "filebase-secret-key", ""),
	Endpoint:         aws.String("https://s3.filebase.com"),
	Region:           aws.String("us-east-1"),
	S3ForcePathStyle: aws.Bool(true),
}

// create a new session using the config above and profile
goSession, err := session.NewSessionWithOptions(session.Options{
	Config:  s3Config,
	Profile: "filebase",
})

// check if the session was created correctly.
if err != nil {
	fmt.Println(err)
}

// create a s3 client session
s3Client := s3.New(goSession)

// create put object input
getObjectInput := &s3.GetObjectInput{
	Bucket: aws.String("bucket-name"),
	Key:    aws.String("object-name"),
}

// get file
_, err = s3Client.GetObject(getObjectInput)

// print if there is an error
if err != nil 
	fmt.Println(err.Error())
return
}
}

Delete an Object

The following code example deletes an object from the specified bucket. Replace the following values in the code to match your configuration:

  • filebase-access-key: Your Filebase Access Key

  • filebase-secret-key: Your Filebase Secret Key

  • bucket-name: Your Filebase Bucket Name

  • object-name: The name of the object to be deleted

package main

import (
	"fmt"
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/service/s3"
)

func main() {
//// create a configuration
	s3Config := aws.Config{
	Credentials:      credentials.NewStaticCredentials("filebase-access-key", "filebase-secret-key", ""),
	Endpoint:         aws.String("https://s3.filebase.com"),
	Region:           aws.String("us-east-1"),
	S3ForcePathStyle: aws.Bool(true),
}

// create a new session using the config above and profile
goSession, err := session.NewSessionWithOptions(session.Options{
	Config:  s3Config,
	Profile: "filebase",
})

// check if the session was created correctly.
if err != nil {
	fmt.Println(err)
}

// create a s3 client session
s3Client := s3.New(goSession)

// create put object input
deleteObjectInput := &s3.DeleteObjectInput{
	Bucket: aws.String("bucket-name"),
	Key:    aws.String("object-name"),
}

// get file
_, err = s3Client.DeleteObject(deleteObjectInput)

// print if there is an error
if err != nil {
	fmt.Println(err.Error())
return
}
}

For more information on the AWS SDK for Go, check out the documentation here.

Last updated

Was this helpful?