Introduction
I have written blog post in the previous post on using various storage classes in S3.
So, here in this post I will show you that how you can upload any file to S3 using different storage classes.
Code
package main import ( "encoding/csv" "fmt" "math/rand" "os" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/glacier" "github.com/aws/aws-sdk-go/service/s3/s3manager" ) func main() { // Generate random CSV data data := [][]string{ {"name", "age", "gender"}, {"Alice", fmt.Sprint(rand.Intn(50)), "female"}, {"Bob", fmt.Sprint(rand.Intn(50)), "male"}, {"Charlie", fmt.Sprint(rand.Intn(50)), "male"}, {"David", fmt.Sprint(rand.Intn(50)), "male"}, } // Create a new CSV file file, err := os.Create("random.csv") if err != nil { panic(err) } defer file.Close() // Write CSV data to file writer := csv.NewWriter(file) defer writer.Flush() for _, row := range data { err := writer.Write(row) if err != nil { panic(err) } } // Upload file to S3 with GLACIER storage class bucket := "my-bucket" region := "us-east-1" key := "random.csv" uploader := s3manager.NewUploader(session.Must(session.NewSession(&aws.Config{ Region: aws.String(region), }))) _, err = uploader.Upload(&s3manager.UploadInput{ Bucket: &bucket, Key: &key, Body: file, ACL: aws.String("private"), StorageClass: aws.String("GLACIER"), }) if err != nil { panic(err) } // Archive file to S3 Glacier Service svc := glacier.New(session.Must(session.NewSession(&aws.Config{ Region: aws.String(region), }))) vaultName := "my-vault" _, err = svc.UploadArchive(&glacier.UploadArchiveInput{ Body: file, VaultName: aws.String(vaultName), }) if err != nil { panic(err) } fmt.Println("File uploaded to S3 with Standard-IA storage class and archived to S3 Glacier") }
Various storage classes placeholder
These are different strings for storage class which can be passed to store the data in S3 in different classes.
STANDARD: Standard storage class for frequently accessed data. STANDARD_IA: Standard-Infrequent Access storage class for infrequently accessed data. ONEZONE_IA: One Zone-Infrequent Access storage class for infrequently accessed data that can be recreated. INTELLIGENT_TIERING: Intelligent Tiering storage class for data with unknown or changing access patterns. GLACIER: Glacier storage class for long-term data archival. DEEP_ARCHIVE: Deep Archive storage class for long-term data archival with the lowest cost.
Top comments (0)