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 (
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(),
	if err != nil {
	// 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 {
	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 {
	log.Println("Successfully uploaded object")

Last updated