| // Upload Managers |
| // |
| // The s3manager package's Uploader provides concurrent upload of content to S3 |
| // by taking advantage of S3's Multipart APIs. The Uploader also supports both |
| // io.Reader for streaming uploads, and will also take advantage of io.ReadSeeker |
| // for optimizations if the Body satisfies that type. Once the Uploader instance |
| // is created you can call Upload concurrently from multiple goroutines safely. |
| // |
| // // The session the S3 Uploader will use |
| // sess := session.Must(session.NewSession()) |
| // |
| // // Create an uploader with the session and default options |
| // uploader := s3manager.NewUploader(sess) |
| // |
| // f, err := os.Open(filename) |
| // if err != nil { |
| // return fmt.Errorf("failed to open file %q, %v", filename, err) |
| // } |
| // |
| // // Upload the file to S3. |
| // result, err := uploader.Upload(&s3manager.UploadInput{ |
| // Bucket: aws.String(myBucket), |
| // Key: aws.String(myString), |
| // Body: f, |
| // }) |
| // if err != nil { |
| // return fmt.Errorf("failed to upload file, %v", err) |
| // } |
| // fmt.Printf("file uploaded to, %s\n", aws.StringValue(result.Location)) |
| // |
| // See the s3manager package's Uploader type documentation for more information. |
| // https://docs.aws.amazon.com/sdk-for-go/api/service/s3/s3manager/#Uploader |
| // |
| // Download Manager |
| // |
| // The s3manager package's Downloader provides concurrently downloading of Objects |
| // from S3. The Downloader will write S3 Object content with an io.WriterAt. |
| // Once the Downloader instance is created you can call Download concurrently from |
| // multiple goroutines safely. |
| // |
| // // The session the S3 Downloader will use |
| // sess := session.Must(session.NewSession()) |
| // |
| // // Create a downloader with the session and default options |
| // downloader := s3manager.NewDownloader(sess) |
| // |
| // // Create a file to write the S3 Object contents to. |
| // f, err := os.Create(filename) |
| // if err != nil { |
| // return fmt.Errorf("failed to create file %q, %v", filename, err) |
| // } |
| // |
| // // Write the contents of S3 Object to the file |
| // n, err := downloader.Download(f, &s3.GetObjectInput{ |
| // Bucket: aws.String(myBucket), |
| // Key: aws.String(myString), |
| // }) |
| // if err != nil { |
| // return fmt.Errorf("failed to download file, %v", err) |
| // } |
| // fmt.Printf("file downloaded, %d bytes\n", n) |
| // |
| // See the s3manager package's Downloader type documentation for more information. |
| // https://docs.aws.amazon.com/sdk-for-go/api/service/s3/s3manager/#Downloader |
| // |
| // Get Bucket Region |
| // |
| // GetBucketRegion will attempt to get the region for a bucket using a region |
| // hint to determine which AWS partition to perform the query on. Use this utility |
| // to determine the region a bucket is in. |
| // |
| // sess := session.Must(session.NewSession()) |
| // |
| // bucket := "my-bucket" |
| // region, err := s3manager.GetBucketRegion(ctx, sess, bucket, "us-west-2") |
| // if err != nil { |
| // if aerr, ok := err.(awserr.Error); ok && aerr.Code() == "NotFound" { |
| // fmt.Fprintf(os.Stderr, "unable to find bucket %s's region not found\n", bucket) |
| // } |
| // return err |
| // } |
| // fmt.Printf("Bucket %s is in %s region\n", bucket, region) |
| // |
| // See the s3manager package's GetBucketRegion function documentation for more information |
| // https://docs.aws.amazon.com/sdk-for-go/api/service/s3/s3manager/#GetBucketRegion |
| // |
| // S3 Crypto Client |
| // |
| // The s3crypto package provides the tools to upload and download encrypted |
| // content from S3. The Encryption and Decryption clients can be used concurrently |
| // once the client is created. |
| // |
| // sess := session.Must(session.NewSession()) |
| // |
| // // Create the decryption client. |
| // svc := s3crypto.NewDecryptionClient(sess) |
| // |
| // // The object will be downloaded from S3 and decrypted locally. By metadata |
| // // about the object's encryption will instruct the decryption client how |
| // // decrypt the content of the object. By default KMS is used for keys. |
| // result, err := svc.GetObject(&s3.GetObjectInput { |
| // Bucket: aws.String(myBucket), |
| // Key: aws.String(myKey), |
| // }) |
| // |
| // See the s3crypto package documentation for more information. |
| // https://docs.aws.amazon.com/sdk-for-go/api/service/s3/s3crypto/ |
| // |
| package s3 |