Golang Print

  • 0

1. Install the Dependencies

To install the project dependencies, simply run the following command in your terminal:

go mod init aws_s3
go get github.com/aws/aws-sdk-go-v2/service/s3

The following commands show how to retrieve the standard set of SDK modules to use in your application.

go get github.com/aws/aws-sdk-go-v2
go get github.com/aws/aws-sdk-go-v2/config

2. Setup the Environment

We will be setting up two environment variables, ACCESS_KEY and SECRET_KEY, which are required to access the S3 Cloud Storage service. Assign the values of these variables to the values of your credential that you received.

export ACCESS_KEY=<your-access-key>
export SECRET_KEY=<your-secret-key>

3. Minimal code example

package main
 
import (
"context"
"log"
"os"
"strings"
 
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
 
func main() {
resolver := aws.EndpointResolverWithOptionsFunc(func(service, region string, options ...interface{}) (aws.Endpoint, error) {
return aws.Endpoint{
URL:           "S3_ENDPOINT_URL",
SigningRegion: "us-east-1",
}, nil
})
 
credentials := aws.CredentialsProviderFunc(func(ctx context.Context) (aws.Credentials, error) {
return aws.Credentials{
AccessKeyID:     "YOUR_ACCESS_KEY_ID",
SecretAccessKey: "YOUR_SECRET_ACCESS_KEY",
}, nil
})
 
// Load config
cfg, err := config.LoadDefaultConfig(context.TODO(),
config.WithCredentialsProvider(credentials),
config.WithEndpointResolverWithOptions(resolver),
)
if err != nil {
log.Fatal(err)
}
 
// Create an Amazon S3 service client
s3Client := s3.NewFromConfig(cfg,
func(o *s3.Options) {
o.UsePathStyle = true
},
)
 
filePath := "YOUR_FILE_PATH"
// Get file name from filePath
path := strings.Split(filePath, "/")
fileName := path[len(path)-1]
 
file, openErr := os.Open(filePath)
if openErr != nil {
log.Fatal(openErr)
}
defer file.Close()
_, putErr := s3Client.PutObject(context.TODO(), &s3.PutObjectInput{
Bucket: aws.String("YOUR_BUCKET_NAME"),
Key:    aws.String(fileName),
Body:   file,
})
 
if putErr != nil {
panic(putErr)
}
 
log.Println("Successfully uploaded object")
}


Was this answer helpful?

« Back