Documentation
¶
Overview ¶
Package s3util contains methods for interacting with S3.
Package s3util contains utilities for working with the file system.
Package s3util contains methods for interacting with S3.
Package s3util contains methods for interacting with S3.
Index ¶
- Constants
- func GetS3CrossRegionCapableSession(context context.T, bucketName string) (*session.Session, error)
- func GetS3Endpoint(context context.T, region string) (s3Endpoint string)
- type AmazonS3URL
- type AmazonS3Util
- type HttpProvider
- type HttpProviderImpl
- type IAmazonS3Util
- type MockS3Uploader
- func (uploader *MockS3Uploader) GetS3BucketRegionFromErrorMsg(log log.T, errMsg string) string
- func (uploader *MockS3Uploader) GetS3ClientRegion() string
- func (uploader *MockS3Uploader) IsBucketEncrypted(log log.T, bucketName string) (bool, error)
- func (uploader *MockS3Uploader) IsS3ErrorRelatedToAccessDenied(errMsg string) bool
- func (uploader *MockS3Uploader) IsS3ErrorRelatedToWrongBucketRegion(errMsg string) bool
- func (uploader *MockS3Uploader) S3Upload(log log.T, bucketName string, bucketKey string, contentPath string) error
- func (uploader *MockS3Uploader) SetS3ClientRegion(region string)
- func (uploader *MockS3Uploader) UploadS3TestFile(log log.T, bucketName, key string) error
Constants ¶
const ( // EndpointPattern is a valid regular expression for s3 url pattern EndpointPattern = "^(.+\\.)?s3[.-]([a-z0-9-]+)\\." // cn- is a prefix for China region ChinaRegionPrefix = "cn-" )
Variables ¶
This section is empty.
Functions ¶
func GetS3CrossRegionCapableSession ¶
Returns a Session capable of performing cross-region S3 bucket accesses (i.e. the bucket region may be different from the instance's home region). The session is initialized to work with the specified bucket, and should not be used to access other buckets.
When initializing the session, we make a best-effort attempt to determine the region in which the bucket resides. The session is initialized with the correct region for the bucket if the region was successfully determined, or with the instance region.
The session also has a Handler chain and custom HTTP RoundTripper that follow cross-region redirect responses from S3. These work as follows:
- The custom RoundTripper (s3BucketRegionHeaderCapturingTransport) extracts the bucket region information from S3 redirect responses and stores them in a cache.
- The Retry Handler, which is invoked before each retry, checks to see whether a bucket -> region mapping exists for the request's bucket, and if so, fixes up the request to point to the correct region.
- The Validation Handler, which is invoked before the first attempt, similarly checks for a bucket -> region mapping for the request's bucket, and if one is found, fixes up the request to point to the correct region.
In most cases, the best-effort attempt will initialize the session with the correct region, and the custom Transport and Handler chain will not need to make any changes.
Types ¶
type AmazonS3URL ¶
type AmazonS3URL struct {
IsValidS3URI bool
IsPathStyle bool
Bucket string
Key string
Region string
}
AmazonS3URL holds interesting pieces after parsing a s3 URL
func ParseAmazonS3URL ¶
func ParseAmazonS3URL(log log.T, s3URL *url.URL) (output AmazonS3URL)
ParseAmazonS3URL parses a URL and returns AmazonS3URL object
func (AmazonS3URL) IsBucketAndKeyPresent ¶
func (output AmazonS3URL) IsBucketAndKeyPresent() bool
IsBucketAndKeyPresent checks the AmazonS3URL if it contains both bucket and key
func (AmazonS3URL) String ¶
func (output AmazonS3URL) String() string
String returns the string representation of the AmazonS3URL
type AmazonS3Util ¶
type AmazonS3Util struct {
// contains filtered or unexported fields
}
func NewAmazonS3Util ¶
func NewAmazonS3Util(context context.T, bucketName string) (res *AmazonS3Util, err error)
func (*AmazonS3Util) IsBucketEncrypted ¶
IsBucketEncrypted checks if the bucket is encrypted
type HttpProviderImpl ¶
type HttpProviderImpl struct {
// contains filtered or unexported fields
}
HttpProviderImpl provides http capabilities
type IAmazonS3Util ¶
type MockS3Uploader ¶
MockS3Uploader mocks an s3 uploader.
func (*MockS3Uploader) GetS3BucketRegionFromErrorMsg ¶
func (uploader *MockS3Uploader) GetS3BucketRegionFromErrorMsg(log log.T, errMsg string) string
GetS3BucketRegionFromErrorMsg mocks the method with the same name.
func (*MockS3Uploader) GetS3ClientRegion ¶
func (uploader *MockS3Uploader) GetS3ClientRegion() string
GetS3ClientRegion mocks the method with the same name.
func (*MockS3Uploader) IsBucketEncrypted ¶
IsBucketEncrypted mocks the method with the same name.
func (*MockS3Uploader) IsS3ErrorRelatedToAccessDenied ¶
func (uploader *MockS3Uploader) IsS3ErrorRelatedToAccessDenied(errMsg string) bool
IsS3ErrorRelatedToAccessDenied mocks the method with the same name.
func (*MockS3Uploader) IsS3ErrorRelatedToWrongBucketRegion ¶
func (uploader *MockS3Uploader) IsS3ErrorRelatedToWrongBucketRegion(errMsg string) bool
IsS3ErrorRelatedToWrongBucketRegion mocks the method with the same name.
func (*MockS3Uploader) S3Upload ¶
func (uploader *MockS3Uploader) S3Upload(log log.T, bucketName string, bucketKey string, contentPath string) error
S3Upload mocks the method with the same name.
func (*MockS3Uploader) SetS3ClientRegion ¶
func (uploader *MockS3Uploader) SetS3ClientRegion(region string)
SetS3ClientRegion mocks the method with the same name.
func (*MockS3Uploader) UploadS3TestFile ¶
func (uploader *MockS3Uploader) UploadS3TestFile(log log.T, bucketName, key string) error
UploadS3TestFile mocks the method with the same name.