package main import ( "fmt" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awsutil" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/service/s3" "log" "os" ) func main() { fileTransfer := FileTransferToS3{ AccessKeyId: "ACCESS_KEY_ID", SecretAccessKey: "SECRET_ACCESS_KEY", Region: "us-west-2", BucketName: "bucket-name", } fileTransfer.PutToS3("./", "sample.jpg") } type FileTransferToS3 struct { AccessKeyId string SecretAccessKey string Region string BucketName string } func (f *FileTransferToS3) PutToS3(path string, filename string) { file, err := os.Open(fmt.Sprintf("%s%s", path, filename)) if err != nil { log.Println(err.Error()) } defer file.Close() cli := s3.New(&aws.Config{ Credentials: credentials.NewStaticCredentials(f.AccessKeyId, f.SecretAccessKey, ""), Region: f.Region, }) resp, err := cli.PutObject(&s3.PutObjectInput{ Bucket: aws.String(f.BucketName), Key: aws.String(filename), Body: file, }) if err != nil { log.Println(err.Error()) } log.Println(awsutil.StringValue(resp)) }