AWS SDK for Go v2 with 130+ service clients, Request/Send pattern, and context support.
service/s3)Import: github.com/aws/aws-sdk-go-v2/service/s3
Full Amazon S3 client including bucket management, object operations, multipart uploads, presigned URLs, encryption, and bucket notifications.
const ServiceName = "s3"
type S3 struct {
*aws.Client
}
func New(config aws.Config) *S3DisableURIPathEscaping: true in signer options).DisableRestProtocolURICleaning config option on aws.Config affects S3 key names with empty path segments.const (
ErrCodeBucketAlreadyExists = "BucketAlreadyExists"
ErrCodeBucketAlreadyOwnedByYou = "BucketAlreadyOwnedByYou"
ErrCodeNoSuchBucket = "NoSuchBucket"
ErrCodeNoSuchKey = "NoSuchKey"
ErrCodeNoSuchUpload = "NoSuchUpload"
ErrCodeObjectAlreadyInActiveTierError = "ObjectAlreadyInActiveTierError"
ErrCodeObjectNotInActiveTierError = "ObjectNotInActiveTierError"
)func (c *S3) CreateBucketRequest(input *CreateBucketInput) CreateBucketRequest
func (c *S3) DeleteBucketRequest(input *DeleteBucketInput) DeleteBucketRequest
func (c *S3) HeadBucketRequest(input *HeadBucketInput) HeadBucketRequest
func (c *S3) ListBucketsRequest(input *ListBucketsInput) ListBucketsRequest
// Bucket configuration
func (c *S3) GetBucketAclRequest(input *GetBucketAclInput) GetBucketAclRequest
func (c *S3) PutBucketAclRequest(input *PutBucketAclInput) PutBucketAclRequest
func (c *S3) GetBucketCorsRequest(input *GetBucketCorsInput) GetBucketCorsRequest
func (c *S3) PutBucketCorsRequest(input *PutBucketCorsInput) PutBucketCorsRequest
func (c *S3) DeleteBucketCorsRequest(input *DeleteBucketCorsInput) DeleteBucketCorsRequest
func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput) GetBucketEncryptionRequest
func (c *S3) PutBucketEncryptionRequest(input *PutBucketEncryptionInput) PutBucketEncryptionRequest
func (c *S3) DeleteBucketEncryptionRequest(input *DeleteBucketEncryptionInput) DeleteBucketEncryptionRequest
func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLifecycleConfigurationInput) GetBucketLifecycleConfigurationRequest
func (c *S3) PutBucketLifecycleConfigurationRequest(input *PutBucketLifecycleConfigurationInput) PutBucketLifecycleConfigurationRequest
func (c *S3) DeleteBucketLifecycleRequest(input *DeleteBucketLifecycleInput) DeleteBucketLifecycleRequest
func (c *S3) GetBucketLocationRequest(input *GetBucketLocationInput) GetBucketLocationRequest
func (c *S3) GetBucketLoggingRequest(input *GetBucketLoggingInput) GetBucketLoggingRequest
func (c *S3) PutBucketLoggingRequest(input *PutBucketLoggingInput) PutBucketLoggingRequest
func (c *S3) GetBucketNotificationConfigurationRequest(input *GetBucketNotificationConfigurationInput) GetBucketNotificationConfigurationRequest
func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificationConfigurationInput) PutBucketNotificationConfigurationRequest
func (c *S3) GetBucketPolicyRequest(input *GetBucketPolicyInput) GetBucketPolicyRequest
func (c *S3) PutBucketPolicyRequest(input *PutBucketPolicyInput) PutBucketPolicyRequest
func (c *S3) DeleteBucketPolicyRequest(input *DeleteBucketPolicyInput) DeleteBucketPolicyRequest
func (c *S3) GetBucketReplicationRequest(input *GetBucketReplicationInput) GetBucketReplicationRequest
func (c *S3) PutBucketReplicationRequest(input *PutBucketReplicationInput) PutBucketReplicationRequest
func (c *S3) DeleteBucketReplicationRequest(input *DeleteBucketReplicationInput) DeleteBucketReplicationRequest
func (c *S3) GetBucketRequestPaymentRequest(input *GetBucketRequestPaymentInput) GetBucketRequestPaymentRequest
func (c *S3) PutBucketRequestPaymentRequest(input *PutBucketRequestPaymentInput) PutBucketRequestPaymentRequest
func (c *S3) GetBucketTaggingRequest(input *GetBucketTaggingInput) GetBucketTaggingRequest
func (c *S3) PutBucketTaggingRequest(input *PutBucketTaggingInput) PutBucketTaggingRequest
func (c *S3) DeleteBucketTaggingRequest(input *DeleteBucketTaggingInput) DeleteBucketTaggingRequest
func (c *S3) GetBucketVersioningRequest(input *GetBucketVersioningInput) GetBucketVersioningRequest
func (c *S3) PutBucketVersioningRequest(input *PutBucketVersioningInput) PutBucketVersioningRequest
func (c *S3) GetBucketWebsiteRequest(input *GetBucketWebsiteInput) GetBucketWebsiteRequest
func (c *S3) PutBucketWebsiteRequest(input *PutBucketWebsiteInput) PutBucketWebsiteRequest
func (c *S3) DeleteBucketWebsiteRequest(input *DeleteBucketWebsiteInput) DeleteBucketWebsiteRequest
func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAccelerateConfigurationInput) GetBucketAccelerateConfigurationRequest
func (c *S3) PutBucketAccelerateConfigurationRequest(input *PutBucketAccelerateConfigurationInput) PutBucketAccelerateConfigurationRequestfunc (c *S3) GetObjectRequest(input *GetObjectInput) GetObjectRequest
func (c *S3) PutObjectRequest(input *PutObjectInput) PutObjectRequest
func (c *S3) HeadObjectRequest(input *HeadObjectInput) HeadObjectRequest
func (c *S3) DeleteObjectRequest(input *DeleteObjectInput) DeleteObjectRequest
func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) DeleteObjectsRequest
func (c *S3) CopyObjectRequest(input *CopyObjectInput) CopyObjectRequest
func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) RestoreObjectRequest
func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) SelectObjectContentRequest
func (c *S3) GetObjectAclRequest(input *GetObjectAclInput) GetObjectAclRequest
func (c *S3) PutObjectAclRequest(input *PutObjectAclInput) PutObjectAclRequest
func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) GetObjectTaggingRequest
func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) PutObjectTaggingRequest
func (c *S3) DeleteObjectTaggingRequest(input *DeleteObjectTaggingInput) DeleteObjectTaggingRequest
func (c *S3) GetObjectTorrentRequest(input *GetObjectTorrentInput) GetObjectTorrentRequestfunc (c *S3) ListObjectsRequest(input *ListObjectsInput) ListObjectsRequest
func (c *S3) ListObjectsV2Request(input *ListObjectsV2Input) ListObjectsV2Request
func (c *S3) ListObjectVersionsRequest(input *ListObjectVersionsInput) ListObjectVersionsRequestfunc (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadInput) CreateMultipartUploadRequest
func (c *S3) UploadPartRequest(input *UploadPartInput) UploadPartRequest
func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) UploadPartCopyRequest
func (c *S3) CompleteMultipartUploadRequest(input *CompleteMultipartUploadInput) CompleteMultipartUploadRequest
func (c *S3) AbortMultipartUploadRequest(input *AbortMultipartUploadInput) AbortMultipartUploadRequest
func (c *S3) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) ListMultipartUploadsRequest
func (c *S3) ListPartsRequest(input *ListPartsInput) ListPartsRequestfunc (c *S3) GetBucketAnalyticsConfigurationRequest(input *GetBucketAnalyticsConfigurationInput) GetBucketAnalyticsConfigurationRequest
func (c *S3) PutBucketAnalyticsConfigurationRequest(input *PutBucketAnalyticsConfigurationInput) PutBucketAnalyticsConfigurationRequest
func (c *S3) DeleteBucketAnalyticsConfigurationRequest(input *DeleteBucketAnalyticsConfigurationInput) DeleteBucketAnalyticsConfigurationRequest
func (c *S3) ListBucketAnalyticsConfigurationsRequest(input *ListBucketAnalyticsConfigurationsInput) ListBucketAnalyticsConfigurationsRequest
func (c *S3) GetBucketMetricsConfigurationRequest(input *GetBucketMetricsConfigurationInput) GetBucketMetricsConfigurationRequest
func (c *S3) PutBucketMetricsConfigurationRequest(input *PutBucketMetricsConfigurationInput) PutBucketMetricsConfigurationRequest
func (c *S3) DeleteBucketMetricsConfigurationRequest(input *DeleteBucketMetricsConfigurationInput) DeleteBucketMetricsConfigurationRequest
func (c *S3) ListBucketMetricsConfigurationsRequest(input *ListBucketMetricsConfigurationsInput) ListBucketMetricsConfigurationsRequest
func (c *S3) GetBucketInventoryConfigurationRequest(input *GetBucketInventoryConfigurationInput) GetBucketInventoryConfigurationRequest
func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryConfigurationInput) PutBucketInventoryConfigurationRequest
func (c *S3) DeleteBucketInventoryConfigurationRequest(input *DeleteBucketInventoryConfigurationInput) DeleteBucketInventoryConfigurationRequest
func (c *S3) ListBucketInventoryConfigurationsRequest(input *ListBucketInventoryConfigurationsInput) ListBucketInventoryConfigurationsRequestfunc (c *S3) WaitUntilBucketExists(ctx aws.Context, input *HeadBucketInput, opts ...aws.WaiterOption) error
func (c *S3) WaitUntilBucketNotExists(ctx aws.Context, input *HeadBucketInput, opts ...aws.WaiterOption) error
func (c *S3) WaitUntilObjectExists(ctx aws.Context, input *HeadObjectInput, opts ...aws.WaiterOption) error
func (c *S3) WaitUntilObjectNotExists(ctx aws.Context, input *HeadObjectInput, opts ...aws.WaiterOption) error// Normalize bucket location: normalizes EU to eu-west-1
func NormalizeBucketLocation(loc BucketLocationConstraint) BucketLocationConstraint
func WithNormalizeBucketLocation(r *aws.Request)
var NormalizeBucketLocationHandler aws.NamedHandlertype BucketCannedACL string
const (
BucketCannedACLPrivate BucketCannedACL = "private"
BucketCannedACLPublicRead BucketCannedACL = "public-read"
BucketCannedACLPublicReadWrite BucketCannedACL = "public-read-write"
BucketCannedACLAuthenticatedRead BucketCannedACL = "authenticated-read"
)
type ObjectCannedACL string
const (
ObjectCannedACLPrivate ObjectCannedACL = "private"
ObjectCannedACLPublicRead ObjectCannedACL = "public-read"
ObjectCannedACLPublicReadWrite ObjectCannedACL = "public-read-write"
ObjectCannedACLAuthenticatedRead ObjectCannedACL = "authenticated-read"
ObjectCannedACLAwsExecRead ObjectCannedACL = "aws-exec-read"
ObjectCannedACLBucketOwnerRead ObjectCannedACL = "bucket-owner-read"
ObjectCannedACLBucketOwnerFullControl ObjectCannedACL = "bucket-owner-full-control"
)
type StorageClass string
const (
StorageClassStandard StorageClass = "STANDARD"
StorageClassReducedRedundancy StorageClass = "REDUCED_REDUNDANCY"
StorageClassStandardIa StorageClass = "STANDARD_IA"
StorageClassOnezoneIa StorageClass = "ONEZONE_IA"
StorageClassGlacier StorageClass = "GLACIER"
)
type ServerSideEncryption string
const (
ServerSideEncryptionAes256 ServerSideEncryption = "AES256"
ServerSideEncryptionAwsKms ServerSideEncryption = "aws:kms"
)
type BucketVersioningStatus string
const (
BucketVersioningStatusEnabled BucketVersioningStatus = "Enabled"
BucketVersioningStatusSuspended BucketVersioningStatus = "Suspended"
)
type BucketLocationConstraint string
const (
BucketLocationConstraintEu BucketLocationConstraint = "EU"
BucketLocationConstraintEuWest1 BucketLocationConstraint = "eu-west-1"
BucketLocationConstraintUsWest1 BucketLocationConstraint = "us-west-1"
BucketLocationConstraintUsWest2 BucketLocationConstraint = "us-west-2"
BucketLocationConstraintApSouth1 BucketLocationConstraint = "ap-south-1"
BucketLocationConstraintApSoutheast1 BucketLocationConstraint = "ap-southeast-1"
BucketLocationConstraintApSoutheast2 BucketLocationConstraint = "ap-southeast-2"
BucketLocationConstraintApNortheast1 BucketLocationConstraint = "ap-northeast-1"
BucketLocationConstraintSaEast1 BucketLocationConstraint = "sa-east-1"
BucketLocationConstraintCnNorth1 BucketLocationConstraint = "cn-north-1"
BucketLocationConstraintEuCentral1 BucketLocationConstraint = "eu-central-1"
// ... more regions
)
type TaggingDirective string
const (
TaggingDirectiveCopy TaggingDirective = "COPY"
TaggingDirectiveReplace TaggingDirective = "REPLACE"
)
type RequestPayer string
const (
RequestPayerRequester RequestPayer = "requester"
)
type Tier string
const (
TierStandard Tier = "Standard"
TierBulk Tier = "Bulk"
TierExpedited Tier = "Expedited"
)
type Type string
const (
TypeCanonicalUser Type = "CanonicalUser"
TypeAmazonCustomerByEmail Type = "AmazonCustomerByEmail"
TypeGroup Type = "Group"
)
type ReplicationStatus string
const (
ReplicationStatusComplete ReplicationStatus = "COMPLETE"
ReplicationStatusPending ReplicationStatus = "PENDING"
ReplicationStatusFailed ReplicationStatus = "FAILED"
ReplicationStatusReplica ReplicationStatus = "REPLICA"
)type GetObjectInput struct {
Bucket *string `location:"uri" locationName:"Bucket"`
Key *string `location:"uri" locationName:"Key"`
IfMatch *string `location:"header" locationName:"If-Match"`
IfModifiedSince *time.Time
IfNoneMatch *string
IfUnmodifiedSince *time.Time
PartNumber *int64
Range *string `location:"header" locationName:"Range"`
RequestPayer RequestPayer
ResponseCacheControl *string
ResponseContentDisposition *string
ResponseContentEncoding *string
ResponseContentLanguage *string
ResponseContentType *string
ResponseExpires *time.Time
SSECustomerAlgorithm *string
SSECustomerKey *string
SSECustomerKeyMD5 *string
VersionId *string
}
type GetObjectOutput struct {
Body io.ReadCloser
ContentLength *int64
ContentType *string
ContentEncoding *string
ContentDisposition *string
ContentLanguage *string
ContentRange *string
ETag *string
Expiration *string
LastModified *time.Time
Metadata map[string]*string
MissingMeta *int64
PartsCount *int64
ReplicationStatus ReplicationStatus
RequestCharged RequestCharged
Restore *string
SSECustomerAlgorithm *string
SSECustomerKeyMD5 *string
SSEKMSKeyId *string
ServerSideEncryption ServerSideEncryption
StorageClass StorageClass
TagCount *int64
VersionId *string
WebsiteRedirectLocation *string
DeleteMarker *bool
MissingMeta *int64
}
type PutObjectInput struct {
Bucket *string `location:"uri" locationName:"Bucket"`
Key *string `location:"uri" locationName:"Key"`
Body io.ReadSeeker
ACL ObjectCannedACL
CacheControl *string
ContentDisposition *string
ContentEncoding *string
ContentLanguage *string
ContentLength *int64
ContentMD5 *string
ContentType *string
Expires *time.Time
GrantFullControl *string
GrantRead *string
GrantReadACP *string
GrantWriteACP *string
Metadata map[string]*string
RequestPayer RequestPayer
SSECustomerAlgorithm *string
SSECustomerKey *string
SSECustomerKeyMD5 *string
SSEKMSKeyId *string
ServerSideEncryption ServerSideEncryption
StorageClass StorageClass
Tagging *string
WebsiteRedirectLocation *string
}
type PutObjectOutput struct {
ETag *string
Expiration *string
RequestCharged RequestCharged
SSECustomerAlgorithm *string
SSECustomerKeyMD5 *string
SSEKMSKeyId *string
ServerSideEncryption ServerSideEncryption
VersionId *string
}
type CreateBucketInput struct {
Bucket *string `location:"uri" locationName:"Bucket"`
ACL BucketCannedACL
CreateBucketConfiguration *CreateBucketConfiguration
GrantFullControl *string
GrantRead *string
GrantReadACP *string
GrantWrite *string
GrantWriteACP *string
ObjectLockEnabledForBucket *bool
}
type CreateBucketConfiguration struct {
LocationConstraint BucketLocationConstraint
}
type DeleteObjectsInput struct {
Bucket *string `location:"uri" locationName:"Bucket"`
Delete *Delete
MFA *string
RequestPayer RequestPayer
}
type Delete struct {
Objects []ObjectIdentifier
Quiet *bool
}
type ObjectIdentifier struct {
Key *string
VersionId *string
}
type ListObjectsV2Input struct {
Bucket *string `location:"uri" locationName:"Bucket"`
ContinuationToken *string
Delimiter *string
EncodingType EncodingType
FetchOwner *bool
MaxKeys *int64
Prefix *string
RequestPayer RequestPayer
StartAfter *string
}
type ListObjectsV2Output struct {
Contents []Object
CommonPrefixes []CommonPrefix
ContinuationToken *string
Delimiter *string
EncodingType EncodingType
IsTruncated *bool
KeyCount *int64
MaxKeys *int64
Name *string
NextContinuationToken *string
Prefix *string
StartAfter *string
}
type Object struct {
ETag *string
Key *string
LastModified *time.Time
Owner *Owner
Size *int64
StorageClass ObjectStorageClass
}
type Owner struct {
DisplayName *string
ID *string
}
type Bucket struct {
CreationDate *time.Time
Name *string
}
type Tag struct {
Key *string
Value *string
}
type Tagging struct {
TagSet []Tag
}svc := s3.New(cfg)
f, _ := os.Open("file.txt")
defer f.Close()
req := svc.PutObjectRequest(&s3.PutObjectInput{
Bucket: aws.String("my-bucket"),
Key: aws.String("path/to/file.txt"),
Body: f,
ContentType: aws.String("text/plain"),
ServerSideEncryption: s3.ServerSideEncryptionAes256,
})
resp, err := req.Send()req := svc.GetObjectRequest(&s3.GetObjectInput{
Bucket: aws.String("my-bucket"),
Key: aws.String("path/to/file.txt"),
})
resp, err := req.Send()
if err != nil { ... }
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)req := svc.GetObjectRequest(&s3.GetObjectInput{
Bucket: aws.String("my-bucket"),
Key: aws.String("path/to/file.txt"),
})
url, err := req.Presign(15 * time.Minute)req := svc.ListObjectsV2Request(&s3.ListObjectsV2Input{
Bucket: aws.String("my-bucket"),
Prefix: aws.String("logs/"),
})
p := req.Paginate()
for p.Next() {
for _, obj := range p.CurrentPage().Contents {
fmt.Printf("%s (%d bytes)\n", *obj.Key, *obj.Size)
}
}
if err := p.Err(); err != nil { ... }req := svc.DeleteObjectsRequest(&s3.DeleteObjectsInput{
Bucket: aws.String("my-bucket"),
Delete: &s3.Delete{
Objects: []s3.ObjectIdentifier{
{Key: aws.String("file1.txt")},
{Key: aws.String("file2.txt")},
},
Quiet: aws.Bool(true),
},
})
resp, err := req.Send()req := svc.CopyObjectRequest(&s3.CopyObjectInput{
Bucket: aws.String("dest-bucket"),
Key: aws.String("dest-key"),
CopySource: aws.String("source-bucket/source-key"),
StorageClass: s3.StorageClassStandardIa,
})See S3 Encryption for s3crypto documentation.
// From github.com/aws/aws-sdk-go-v2/service/s3/s3iface
type S3API interface {
// All S3 operations as methods
CreateBucketRequest(*s3.CreateBucketInput) s3.CreateBucketRequest
DeleteBucketRequest(*s3.DeleteBucketInput) s3.DeleteBucketRequest
GetObjectRequest(*s3.GetObjectInput) s3.GetObjectRequest
PutObjectRequest(*s3.PutObjectInput) s3.PutObjectRequest
// ... all other operations
WaitUntilBucketExists(aws.Context, *s3.HeadBucketInput, ...aws.WaiterOption) error
WaitUntilBucketNotExists(aws.Context, *s3.HeadBucketInput, ...aws.WaiterOption) error
WaitUntilObjectExists(aws.Context, *s3.HeadObjectInput, ...aws.WaiterOption) error
WaitUntilObjectNotExists(aws.Context, *s3.HeadObjectInput, ...aws.WaiterOption) error
}Install with Tessl CLI
npx tessl i tessl/golang-github-com--aws--aws-sdk-go-v2@0.4.0