Documentation ¶
Index ¶
- Constants
- Variables
- func IsValidCannedAcl(acl Acl) (err error)
- func ParseAmzDate(amzDateStr string) (amzDate time.Time, apiErr error)
- type AccessControlPolicy
- type AccessControlPolicyResponse
- type Acl
- type AppendObjectResult
- type ApplyServerSideEncryptionByDefault
- type Bucket
- type BucketLoggingRule
- type BucketLoggingStatus
- type CommonPrefix
- type CompleteMultipartResult
- type CompleteMultipartUploadResponse
- type Condition
- type CopyObjectPartResponse
- type CopyObjectResponse
- type Cors
- type CorsRule
- type CreateBucketLocationConfiguration
- type DeleteError
- type DeleteObjectResult
- type DeleteObjectsRequest
- type EncryptionConfiguration
- type ErrorDocument
- type GlacierJobParameters
- type Grant
- type GrantResponse
- type Grantee
- type GranteeResponse
- type Headers
- type HttpRange
- type IndexDocument
- type InitiateMultipartUploadResponse
- type Initiator
- type Lifecycle
- type LifecycleRule
- type ListBucketsResponse
- type ListMultipartUploadsResponse
- type ListObjectsRequest
- type ListObjectsResponse
- type ListPartsRequest
- type ListPartsResponse
- type ListUploadsRequest
- type LocationResponse
- type MetaConfiguration
- type MetaData
- type MetaDataReq
- type Object
- type ObjectIdentifier
- type Owner
- type Part
- type PostResponse
- type PutObjectPartResult
- type PutObjectResult
- type Redirect
- type RedirectAllRequestsTo
- type RenameObjectResponse
- type RenameObjectResult
- type Restore
- type RoutingRule
- type Rule
- type SseRequest
- type Upload
- type VersionedListObjectsResponse
- type VersionedObject
- type Versioning
- type WebsiteConfiguration
Constants ¶
const ( CANNEDACL_PRIVATE = 0 CANNEDACL_PUBLIC_READ = 1 CANNEDACL_PUBLIC_READ_WRITE = 2 CANNEDACL_AWS_EXEC_READ = 3 CANNEDACL_AUTHENTICATED_READ = 4 CANNEDACL_BUCKET_OWNER_READ = 5 CANNEDACL_BUCKET_OWNER_FULL_CONTROLL = 6 )
const ( XMLNSXSI = "http://www.w3.org/2001/XMLSchema-instance" XMLNS = "http://s3.amazonaws.com/doc/2006-03-01/" )
const ( ACL_TYPE_CANONICAL_USER = "CanonicalUser" ACL_TYPE_GROUP = "Group" )
const ( ACL_GROUP_TYPE_ALL_USERS = "http://acs.amazonaws.com/groups/global/AllUsers" ACL_GROUP_TYPE_AUTHENTICATED_USERS = "http://acs.amazonaws.com/groups/global/AuthenticatedUsers" )
const ( ACL_PERM_READ = "READ" ACL_PERM_WRITE = "WRITE" ACL_PERM_READ_ACP = "READ_ACP" ACL_PERM_WRITE_ACP = "WRITE_ACP" ACL_PERM_FULL_CONTROL = "FULL_CONTROL" )
const ( MaxObjectList = 1000 // Limit number of objects in a listObjectsResponse. MaxUploadsList = 1000 // Limit number of uploads in a listUploadsResponse. MaxPartsList = 1000 // Limit number of parts in a listPartsResponse. )
const ( Iso8601Format = "20060102T150405Z" YYYYMMDD = "20060102" PresignedUrlExpireLimit = 7 * 24 * time.Hour )
const ( MaxBucketEncryptionRulesCount = 100 MaxBucketEncryptionConfigurationSize = 20 * humanize.KiByte )
const ( MaxObjectMetaConfigurationSize = 2 * humanize.KiByte CustomizeMetadataHeader = "X-Amz-Meta-" )
const ( MaxBucketWebsiteRulesCount = 100 MaxBucketWebsiteConfigurationSize = 20 * humanize.KiByte )
const (
MAX_CORS_SIZE = 64 << 10 // 64 KB
)
Variables ¶
var ErrorInvalidRange = errors.New("Invalid range")
ErrorInvalidRange - returned when given range value is not valid.
var ValidCannedAcl = []string{
"private",
"public-read",
"public-read-write",
"aws-exec-read",
"authenticated-read",
"bucket-owner-read",
"bucket-owner-full-controll",
}
Functions ¶
func IsValidCannedAcl ¶
Types ¶
type AccessControlPolicy ¶
type AccessControlPolicyResponse ¶
type AccessControlPolicyResponse struct { XMLName xml.Name `xml:"AccessControlPolicy"` Xmlns string `xml:"xmlns,attr,omitempty"` ID string `xml:"Owner>ID"` DisplayName string `xml:"Owner>DisplayName"` AccessControlList []GrantResponse `xml:"AccessControlList>Grant"` }
func CreatePolicyFromCanned ¶
func CreatePolicyFromCanned(owner Owner, bucketOwner Owner, acl Acl) ( policy AccessControlPolicyResponse, err error)
type Acl ¶
type Acl struct {
CannedAcl string
}
func GetCannedAclFromPolicy ¶
func GetCannedAclFromPolicy(policy AccessControlPolicy) (acl Acl, err error)
the function will be deleted, because we will use AccessControlPolicy instead canned acl stored in hbase
type AppendObjectResult ¶
type AppendObjectResult struct { PutObjectResult NextPosition int64 }
type Bucket ¶
type Bucket struct { Name string CreationDate string // time string of format "2006-01-02T15:04:05.000Z" }
Bucket container for bucket metadata
type BucketLoggingRule ¶
type BucketLoggingStatus ¶
type BucketLoggingStatus struct {
LoggingEnabled BucketLoggingRule `xml:"LoggingEnabled"`
}
type CommonPrefix ¶
CommonPrefix container for prefix response in ListObjectsResponse
type CompleteMultipartResult ¶
type CompleteMultipartUploadResponse ¶
type CompleteMultipartUploadResponse struct { XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ CompleteMultipartUploadResult" json:"-"` Location string Bucket string Key string ETag string }
CompleteMultipartUploadResponse container for completed multipart upload response
type CopyObjectPartResponse ¶
type CopyObjectResponse ¶
type CopyObjectResponse struct { XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ CopyObjectResult" json:"-"` ETag string LastModified string // time string of format "2006-01-02T15:04:05.000Z" }
CopyObjectResponse container returns ETag and LastModified of the successfully copied object
type Cors ¶
type Cors struct { XMLName xml.Name `xml:"CORSConfiguration" json:"-"` CorsRules []CorsRule `xml:"CORSRule"` }
func CorsFromXml ¶
type CorsRule ¶
type CorsRule struct { Id string `xml:"ID"` AllowedMethods []string `xml:"AllowedMethod"` AllowedOrigins []string `xml:"AllowedOrigin"` AllowedHeaders []string `xml:"AllowedHeader"` MaxAgeSeconds int ExposedHeaders []string `xml:"ExposeHeader"` }
func (CorsRule) OriginMatched ¶
func (CorsRule) SetResponseHeaders ¶
func (rule CorsRule) SetResponseHeaders(w http.ResponseWriter, r *http.Request)
type CreateBucketLocationConfiguration ¶
type CreateBucketLocationConfiguration struct { XMLName xml.Name `xml:"CreateBucketConfiguration" json:"-"` Location string `xml:"LocationConstraint"` }
createBucketConfiguration container for bucket configuration request from client. Used for parsing the location from the request body for MakeBucket.
type DeleteError ¶
type DeleteError struct { Code string Message string Key string VersionId string `xml:",omitempty"` }
DeleteError structure.
type DeleteObjectResult ¶
type DeleteObjectsRequest ¶
type DeleteObjectsRequest struct { XMLName xml.Name `xml:"Delete"` // Element to enable quiet mode for the request Quiet bool // List of objects to be deleted Objects []ObjectIdentifier `xml:"Object"` }
DeleteObjectsRequest - xml carrying the object key names which needs to be deleted.
type EncryptionConfiguration ¶
type EncryptionConfiguration struct { XMLName xml.Name `xml:"ServerSideEncryptionConfiguration"` Rules []*Rule `xml:"Rule,omitempty"` }
func ParseEncryptionConfig ¶
func ParseEncryptionConfig(reader io.Reader) (*EncryptionConfiguration, error)
func (*EncryptionConfiguration) Validate ¶
func (e *EncryptionConfiguration) Validate() (error error)
Reference:https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html
type ErrorDocument ¶
type GlacierJobParameters ¶
type GrantResponse ¶
type GrantResponse struct { XMLName xml.Name `xml:"Grant"` Grantee GranteeResponse `xml:"Grantee"` Permission string `xml:"Permission"` }
type Grantee ¶
type Grantee struct { XMLName xml.Name `xml:"Grantee"` XmlnsXsi string `xml:"xmlns:xsi,attr"` XsiType string `xml:"http://www.w3.org/2001/XMLSchema-instance type,attr"` URI string `xml:"URI,omitempty"` ID string `xml:"ID,omitempty"` DisplayName string `xml:"DisplayName,omitempty"` EmailAddress string `xml:"EmailAddress,omitempty"` }
type GranteeResponse ¶
type GranteeResponse struct { XMLName xml.Name `xml:"Grantee"` XmlnsXsi string `xml:"xmlns:xsi,attr"` XsiType string `xml:"xsi:type,attr"` URI string `xml:"URI,omitempty"` ID string `xml:"ID,omitempty"` DisplayName string `xml:"DisplayName,omitempty"` EmailAddress string `xml:"EmailAddress,omitempty"` }
type HttpRange ¶
HttpRange specifies the byte range to be sent to the client.
func ParseRequestRange ¶
type IndexDocument ¶
type InitiateMultipartUploadResponse ¶
type InitiateMultipartUploadResponse struct { XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ InitiateMultipartUploadResult" json:"-"` Bucket string Key string UploadID string `xml:"UploadId"` }
InitiateMultipartUploadResponse container for InitiateMultiPartUpload response, provides uploadID to start MultiPart upload
type Lifecycle ¶ added in v0.6.1
type Lifecycle struct { XMLName xml.Name `xml:"LifecycleConfiguration"` Rule []LifecycleRule `xml:"Rule"` }
type LifecycleRule ¶ added in v0.6.1
type ListBucketsResponse ¶
type ListBucketsResponse struct { XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListAllMyBucketsResult" json:"-"` Owner Owner // Container for one or more buckets. Buckets struct { Buckets []Bucket `xml:"Bucket"` } // Buckets are nested }
ListBucketsResponse - format for list buckets response
type ListMultipartUploadsResponse ¶
type ListMultipartUploadsResponse struct { XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListMultipartUploadsResult" json:"-"` Bucket string KeyMarker string UploadIdMarker string NextKeyMarker string NextUploadIdMarker string EncodingType string `xml:"Encoding-Type,omitempty"` MaxUploads int IsTruncated bool Uploads []Upload `xml:"Upload"` Prefix string Delimiter string CommonPrefixes []CommonPrefix }
ListMultipartUploadsResponse - format for list multipart uploads response.
type ListObjectsRequest ¶
type ListObjectsRequest struct { Versioned bool // should return versioned objects? Version int // Currently 1 or 2 Delimiter string EncodingType string MaxKeys int Prefix string // v1 specific Marker string // v2 specific ContinuationToken string StartAfter string FetchOwner bool // versioned specific KeyMarker string VersionIdMarker string }
type ListObjectsResponse ¶
type ListObjectsResponse struct { XMLName xml.Name `xml:"ListBucketResult"` CommonPrefixes []CommonPrefix Delimiter string EncodingType string `xml:"Encoding-Type,omitempty"` IsTruncated bool MaxKeys int KeyCount int `xml:",omitempty"` Prefix string BucketName string `xml:"Name"` // v1 specific Marker string NextMarker string `xml:",omitempty"` // v2 specific ContinuationToken string `xml:",omitempty"` NextContinuationToken string `xml:",omitempty"` StartAfter string `xml:",omitempty"` Contents []Object }
type ListPartsRequest ¶
type ListPartsResponse ¶
type ListPartsResponse struct { XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListPartsResult" json:"-"` Bucket string Key string UploadId string EncodingType string `xml:"Encoding-Type,omitempty"` Initiator Initiator Owner Owner // The class of storage used to store the object. StorageClass string PartNumberMarker int NextPartNumberMarker int MaxParts int IsTruncated bool // List of parts. Parts []Part `xml:"Part"` }
ListPartsResponse - format for list parts response.
type ListUploadsRequest ¶
type LocationResponse ¶
type LocationResponse struct { XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ LocationConstraint" json:"-"` Location string `xml:",chardata"` }
LocationResponse - format for location response.
type MetaConfiguration ¶
type MetaDataReq ¶
func ParseMetaConfig ¶
func ParseMetaConfig(reader io.Reader) (metaDataReq MetaDataReq, err error)
type Object ¶
type Object struct { XMLName xml.Name `xml:"Contents"` Key string LastModified string // time string of format "2006-01-02T15:04:05.000Z" ETag string Size int64 Owner Owner // The class of storage used to store the object. StorageClass string }
Object container for object metadata
type ObjectIdentifier ¶
type ObjectIdentifier struct { ObjectName string `xml:"Key"` VersionId string `xml:",omitempty"` DeleteMarker bool `xml:",omitempty"` DeleteMarkerVersionId string `xml:",omitempty"` }
ObjectIdentifier carries key name for the object to delete.
type PostResponse ¶
type PostResponse struct { XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ PostResponse" json:"-"` Location string Bucket string Key string ETag string }
PostResponse container for completed post upload response
type PutObjectPartResult ¶
type PutObjectResult ¶
type Redirect ¶
type Redirect struct { XMLName xml.Name `xml:"Redirect"` Protocol string `xml:"Protocol,omitempty"` HostName string `xml:"HostName,omitempty"` ReplaceKeyPrefixWith string `xml:"ReplaceKeyPrefixWith,omitempty"` ReplaceKeyWith string `xml:"ReplaceKeyWith,omitempty"` HttpRedirectCode string `xml:"HttpRedirectCode,omitempty"` }
type RedirectAllRequestsTo ¶
type RenameObjectResponse ¶
type RenameObjectResult ¶
type Restore ¶
type Restore struct { XMLName xml.Name `xml:"RestoreRequest"` Days int `xml:"Days"` GlacierJobParameters GlacierJobParameters `xml:"GlacierJobParameters"` }
type RoutingRule ¶
type RoutingRule struct { XMLName xml.Name `xml:"RoutingRule"` Condition *Condition `xml:"Condition,omitempty"` Redirect *Redirect `xml:"Redirect"` }
func (RoutingRule) DoRedirect ¶
func (rr RoutingRule) DoRedirect(w http.ResponseWriter, r *http.Request, objectName string)
type Rule ¶
type Rule struct { XMLName xml.Name `xml:"Rule"` ApplyServerSideEncryptionByDefault *ApplyServerSideEncryptionByDefault `xml:"ApplyServerSideEncryptionByDefault,omitempty"` }
type SseRequest ¶
type SseRequest struct { // type of Server Side Encryption, could be "SSE-KMS", "SSE-S3", "SSE-C"(custom), or ""(none), // KMS is not implemented yet Type string // AWS-managed specific(KMS and S3) SseAwsKmsKeyId string SseContext string // customer-provided specific(SSE-C) SseCustomerAlgorithm string SseCustomerKey []byte // keys for copy CopySourceSseCustomerAlgorithm string CopySourceSseCustomerKey []byte }
type Upload ¶
type Upload struct { Key string UploadId string Initiator Initiator Owner Owner StorageClass string Initiated string // time string of format "2006-01-02T15:04:05.000Z" }
Upload container for in progress multipart upload
type VersionedListObjectsResponse ¶
type VersionedListObjectsResponse struct { XMLName xml.Name `xml:"ListVersionsResult"` Contents []VersionedObject CommonPrefixes []CommonPrefix Delimiter string EncodingType string `xml:"Encoding-Type,omitempty"` IsTruncated bool MaxKeys int KeyCount int Prefix string BucketName string `xml:"Name"` KeyMarker string NextKeyMarker string VersionIdMarker string NextVersionIdMarker string }
type VersionedObject ¶
type Versioning ¶
type Versioning struct { XMLName xml.Name `xml:"VersioningConfiguration"` Status string `xml:",omitempty"` }
func VersioningFromXml ¶
func VersioningFromXml(xmlBytes []byte) (versioning Versioning, err error)
type WebsiteConfiguration ¶
type WebsiteConfiguration struct { XMLName xml.Name `xml:"WebsiteConfiguration"` Xmlns string `xml:"xmlns,attr,omitempty"` RedirectAllRequestsTo *RedirectAllRequestsTo `xml:"RedirectAllRequestsTo,omitempty"` IndexDocument *IndexDocument `xml:"IndexDocument,omitempty"` ErrorDocument *ErrorDocument `xml:"ErrorDocument,omitempty"` RoutingRules []RoutingRule `xml:"RoutingRules>RoutingRule,omitempty"` }
func ParseWebsiteConfig ¶
func ParseWebsiteConfig(reader io.Reader) (*WebsiteConfiguration, error)
func (*WebsiteConfiguration) Validate ¶
func (w *WebsiteConfiguration) Validate() (error error)
Reference: https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/API/RESTBucketPUTwebsite.html