本文整理汇总了Golang中github.com/aws/aws-sdk-go/service/s3/s3manager.NewUploaderWithClient函数的典型用法代码示例。如果您正苦于以下问题:Golang NewUploaderWithClient函数的具体用法?Golang NewUploaderWithClient怎么用?Golang NewUploaderWithClient使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewUploaderWithClient函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: Put
func (b *s3Backend) Put(tx *postgres.DBTx, info FileInfo, r io.Reader, append bool) error {
if append {
// This is a hack, the next easiest thing to do if we need to handle
// upload resumption is to finalize the multipart upload when the client
// disconnects and when the rest of the data arrives, start a new
// multi-part upload copying the existing object as the first part
// (which is supported by S3 as a specific API call). This requires
// replacing the simple uploader, so it was not done in the first pass.
existing, err := b.Open(tx, info, false)
if err != nil {
return err
}
r = io.MultiReader(existing, r)
}
info.ExternalID = random.UUID()
if err := tx.Exec("UPDATE files SET external_id = $2 WHERE file_id = $1", info.ID, info.ExternalID); err != nil {
return err
}
u := s3manager.NewUploaderWithClient(b.client)
_, err := u.Upload(&s3manager.UploadInput{
Bucket: &b.bucket,
Key: &info.ExternalID,
ContentType: &info.Type,
Body: r,
})
return err
}
开发者ID:ably-forks,项目名称:flynn,代码行数:30,代码来源:s3.go
示例2: AddFile
func (bh *S3BackupHandle) AddFile(filename string) (io.WriteCloser, error) {
if bh.readOnly {
return nil, fmt.Errorf("AddFile cannot be called on read-only backup")
}
reader, writer := io.Pipe()
bh.waitGroup.Add(1)
go func() {
defer bh.waitGroup.Done()
uploader := s3manager.NewUploaderWithClient(bh.client)
object := objName(bh.dir, bh.name, filename)
_, err := uploader.Upload(&s3manager.UploadInput{
Bucket: bucket,
Key: object,
Body: reader,
})
if err != nil {
reader.CloseWithError(err)
bh.errors.RecordError(err)
}
}()
return writer, nil
}
开发者ID:jmptrader,项目名称:vitess,代码行数:25,代码来源:s3.go
示例3: TestReaderAt
func TestReaderAt(t *testing.T) {
svc := s3.New(unit.Session)
svc.Handlers.Unmarshal.Clear()
svc.Handlers.UnmarshalMeta.Clear()
svc.Handlers.UnmarshalError.Clear()
svc.Handlers.Send.Clear()
contentLen := ""
svc.Handlers.Send.PushBack(func(r *request.Request) {
contentLen = r.HTTPRequest.Header.Get("Content-Length")
r.HTTPResponse = &http.Response{
StatusCode: 200,
Body: ioutil.NopCloser(bytes.NewReader([]byte{})),
}
})
mgr := s3manager.NewUploaderWithClient(svc, func(u *s3manager.Uploader) {
u.Concurrency = 1
})
_, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: &fooReaderAt{},
})
assert.NoError(t, err)
assert.Equal(t, contentLen, "12")
}
开发者ID:acquia,项目名称:fifo2kinesis,代码行数:29,代码来源:upload_test.go
示例4: TestUploadFailCleanup
func TestUploadFailCleanup(t *testing.T) {
svc := s3.New(integration.Session)
// Break checksum on 2nd part so it fails
part := 0
svc.Handlers.Build.PushBack(func(r *request.Request) {
if r.Operation.Name == "UploadPart" {
if part == 1 {
r.HTTPRequest.Header.Set("X-Amz-Content-Sha256", "000")
}
part++
}
})
key := "12mb-leave"
mgr := s3manager.NewUploaderWithClient(svc, func(u *s3manager.Uploader) {
u.LeavePartsOnError = false
})
_, err := mgr.Upload(&s3manager.UploadInput{
Bucket: bucketName,
Key: &key,
Body: bytes.NewReader(integBuf12MB),
})
assert.Error(t, err)
assert.NotContains(t, err.Error(), "MissingRegion")
uploadID := ""
if merr, ok := err.(s3manager.MultiUploadFailure); ok {
uploadID = merr.UploadID()
}
assert.NotEmpty(t, uploadID)
_, err = svc.ListParts(&s3.ListPartsInput{
Bucket: bucketName, Key: &key, UploadId: &uploadID})
assert.Error(t, err)
}
开发者ID:acquia,项目名称:fifo2kinesis,代码行数:35,代码来源:integration_test.go
示例5: uploadManifest
func (d *SDKCreateMachineImageManifestDriver) uploadManifest(bucketName string, m *manifests.ImportVolumeManifest) (string, error) {
manifestKey := fmt.Sprintf("bosh-machine-image-manifest-%d", time.Now().UnixNano())
// create presigned GET request for the manifest
getReq, _ := d.s3Client.GetObjectRequest(&s3.GetObjectInput{
Bucket: aws.String(bucketName),
Key: aws.String(manifestKey),
})
manifestGetURL, err := getReq.Presign(1 * time.Hour)
if err != nil {
return "", fmt.Errorf("failed to sign manifest GET request: %s", err)
}
d.logger.Printf("generated presigned manifest GET URL %s\n", manifestGetURL)
// create presigned DELETE request for the manifest
deleteReq, _ := d.s3Client.DeleteObjectRequest(&s3.DeleteObjectInput{
Bucket: aws.String(bucketName),
Key: aws.String(manifestKey),
})
manifestDeleteURL, err := deleteReq.Presign(2 * time.Hour)
if err != nil {
return "", fmt.Errorf("failed to sign manifest delete request: %s", err)
}
d.logger.Printf("generated presigned manifest DELETE URL %s\n", manifestDeleteURL)
m.SelfDestructURL = manifestDeleteURL
manifestBytes, err := xml.Marshal(m)
if err != nil {
return "", fmt.Errorf("serializing machine image manifest: %s", err)
}
manifestReader := bytes.NewReader(manifestBytes)
uploadStartTime := time.Now()
uploader := s3manager.NewUploaderWithClient(d.s3Client)
_, err = uploader.Upload(&s3manager.UploadInput{
Body: manifestReader,
Bucket: aws.String(bucketName),
Key: aws.String(manifestKey),
})
if err != nil {
return "", fmt.Errorf("uploading machine image manifest to S3: %s", err)
}
d.logger.Printf("finished uploaded machine image manifest to s3 after %f seconds\n", time.Since(uploadStartTime).Seconds())
return manifestGetURL, nil
}
开发者ID:cloudfoundry-incubator,项目名称:aws-light-stemcell-builder,代码行数:55,代码来源:create_machine_image_manifest_driver.go
示例6: TestUploadOrderReadFail1
func TestUploadOrderReadFail1(t *testing.T) {
s, ops, _ := loggingSvc(emptyList)
mgr := s3manager.NewUploaderWithClient(s)
_, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: &failreader{times: 1},
})
assert.Equal(t, "ReadRequestBody", err.(awserr.Error).Code())
assert.EqualError(t, err.(awserr.Error).OrigErr(), "random failure")
assert.Equal(t, []string{}, *ops)
}
开发者ID:ColourboxDevelopment,项目名称:aws-sdk-go,代码行数:13,代码来源:upload_test.go
示例7: TestUploadOrderSingleBufferedReader
func TestUploadOrderSingleBufferedReader(t *testing.T) {
s, ops, _ := loggingSvc(emptyList)
mgr := s3manager.NewUploaderWithClient(s)
resp, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: &sizedReader{size: 1024 * 1024 * 2},
})
assert.NoError(t, err)
assert.Equal(t, []string{"PutObject"}, *ops)
assert.NotEqual(t, "", resp.Location)
assert.Equal(t, "", resp.UploadID)
}
开发者ID:ColourboxDevelopment,项目名称:aws-sdk-go,代码行数:14,代码来源:upload_test.go
示例8: Put
// Put uploads a blob to an S3 compatible blobstore
func (client *S3Blobstore) Put(src io.ReadSeeker, dest string) error {
uploader := s3manager.NewUploaderWithClient(client.s3Client)
putResult, err := uploader.Upload(&s3manager.UploadInput{
Body: src,
Bucket: aws.String(client.s3cliConfig.BucketName),
Key: aws.String(dest),
})
if err != nil {
return err
}
log.Println("Successfully uploaded file to", putResult.Location)
return nil
}
开发者ID:barthy1,项目名称:s3cli,代码行数:16,代码来源:client.go
示例9: TestUploadOrderZero
func TestUploadOrderZero(t *testing.T) {
s, ops, args := loggingSvc(emptyList)
mgr := s3manager.NewUploaderWithClient(s)
resp, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: bytes.NewReader(make([]byte, 0)),
})
assert.NoError(t, err)
assert.Equal(t, []string{"PutObject"}, *ops)
assert.NotEqual(t, "", resp.Location)
assert.Equal(t, "", resp.UploadID)
assert.Equal(t, 0, buflen(val((*args)[0], "Body")))
}
开发者ID:ColourboxDevelopment,项目名称:aws-sdk-go,代码行数:15,代码来源:upload_test.go
示例10: TestUploadOrderReadFail2
func TestUploadOrderReadFail2(t *testing.T) {
s, ops, _ := loggingSvc([]string{"UploadPart"})
mgr := s3manager.NewUploaderWithClient(s, func(u *s3manager.Uploader) {
u.Concurrency = 1
})
_, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: &failreader{times: 2},
})
assert.Equal(t, "ReadRequestBody", err.(awserr.Error).Code())
assert.EqualError(t, err.(awserr.Error).OrigErr(), "random failure")
assert.Equal(t, []string{"CreateMultipartUpload", "AbortMultipartUpload"}, *ops)
}
开发者ID:CNDonny,项目名称:scope,代码行数:15,代码来源:upload_test.go
示例11: Put
// Put uploads a blob to an S3 compatible blobstore
func (client *S3Blobstore) Put(src io.ReadSeeker, dest string) error {
cfg := client.s3cliConfig
if cfg.CredentialsSource == config.NoneCredentialsSource {
return errorInvalidCredentialsSourceValue
}
uploader := s3manager.NewUploaderWithClient(client.s3Client, func(u *s3manager.Uploader) {
u.LeavePartsOnError = false
if !cfg.MultipartUpload {
// disable multipart uploads by way of large PartSize configuration
u.PartSize = oneTB
}
})
uploadInput := &s3manager.UploadInput{
Body: src,
Bucket: aws.String(cfg.BucketName),
Key: aws.String(dest),
}
if cfg.ServerSideEncryption != "" {
uploadInput.ServerSideEncryption = aws.String(cfg.ServerSideEncryption)
}
if cfg.SSEKMSKeyID != "" {
uploadInput.SSEKMSKeyId = aws.String(cfg.SSEKMSKeyID)
}
retry := 0
maxRetries := 3
for {
putResult, err := uploader.Upload(uploadInput)
if err != nil {
if _, ok := err.(s3manager.MultiUploadFailure); ok {
if retry == maxRetries {
log.Println("Upload retry limit exceeded:", err.Error())
return fmt.Errorf("upload retry limit exceeded: %s", err.Error())
}
retry++
time.Sleep(time.Second * time.Duration(retry))
continue
}
log.Println("Upload failed:", err.Error())
return fmt.Errorf("upload failure: %s", err.Error())
}
log.Println("Successfully uploaded file to", putResult.Location)
return nil
}
}
开发者ID:pivotal-golang,项目名称:s3cli,代码行数:49,代码来源:client.go
示例12: TestUploadOrderSingleFailure
func TestUploadOrderSingleFailure(t *testing.T) {
s, ops, _ := loggingSvc(emptyList)
s.Handlers.Send.PushBack(func(r *request.Request) {
r.HTTPResponse.StatusCode = 400
})
mgr := s3manager.NewUploaderWithClient(s)
resp, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: bytes.NewReader(buf2MB),
})
assert.Error(t, err)
assert.Equal(t, []string{"PutObject"}, *ops)
assert.Nil(t, resp)
}
开发者ID:ColourboxDevelopment,项目名称:aws-sdk-go,代码行数:16,代码来源:upload_test.go
示例13: Create
func (self *S3Filesystem) Create(src File) error {
var fullpath string
if self.path == "" || strings.HasSuffix(self.path, "/") {
fullpath = filepath.Join(self.path, src.Relative())
} else {
fullpath = self.path
}
input := s3manager.UploadInput{
ACL: aws.String(acl),
Bucket: aws.String(self.bucket),
Key: aws.String(fullpath),
}
switch t := src.(type) {
case *S3File:
// special case for S3File to preserve header information
getObjectInput := s3.GetObjectInput{
Bucket: aws.String(t.bucket),
Key: t.object.Key,
}
output, err := self.conn.GetObject(&getObjectInput)
if err != nil {
return err
}
defer output.Body.Close()
input.Body = output.Body
// transfer existing headers across
input.ContentType = output.ContentType
// input.LastModified = output.LastModified
input.StorageClass = output.StorageClass
default:
reader, err := src.Reader()
if err != nil {
return err
}
input.Body = reader
defer reader.Close()
input.ContentType = aws.String(guessMimeType(src.Relative()))
}
u := s3manager.NewUploaderWithClient(self.conn)
_, err := u.Upload(&input)
return err
}
开发者ID:egidijus,项目名称:s3,代码行数:44,代码来源:s3.go
示例14: TestUploadOrderSingle
func TestUploadOrderSingle(t *testing.T) {
s, ops, args := loggingSvc(emptyList)
mgr := s3manager.NewUploaderWithClient(s)
resp, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: bytes.NewReader(buf2MB),
ServerSideEncryption: aws.String("AES256"),
ContentType: aws.String("content/type"),
})
assert.NoError(t, err)
assert.Equal(t, []string{"PutObject"}, *ops)
assert.NotEqual(t, "", resp.Location)
assert.Equal(t, aws.String("VERSION-ID"), resp.VersionID)
assert.Equal(t, "", resp.UploadID)
assert.Equal(t, "AES256", val((*args)[0], "ServerSideEncryption"))
assert.Equal(t, "content/type", val((*args)[0], "ContentType"))
}
开发者ID:CNDonny,项目名称:scope,代码行数:19,代码来源:upload_test.go
示例15: TestUploadOrderMultiDifferentPartSize
func TestUploadOrderMultiDifferentPartSize(t *testing.T) {
s, ops, args := loggingSvc(emptyList)
mgr := s3manager.NewUploaderWithClient(s, func(u *s3manager.Uploader) {
u.PartSize = 1024 * 1024 * 7
u.Concurrency = 1
})
_, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: bytes.NewReader(buf12MB),
})
assert.NoError(t, err)
assert.Equal(t, []string{"CreateMultipartUpload", "UploadPart", "UploadPart", "CompleteMultipartUpload"}, *ops)
// Part lengths
assert.Equal(t, 1024*1024*7, buflen(val((*args)[1], "Body")))
assert.Equal(t, 1024*1024*5, buflen(val((*args)[2], "Body")))
}
开发者ID:ColourboxDevelopment,项目名称:aws-sdk-go,代码行数:19,代码来源:upload_test.go
示例16: TestUploadOrderMultiFailureOnCreate
func TestUploadOrderMultiFailureOnCreate(t *testing.T) {
s, ops, _ := loggingSvc(emptyList)
s.Handlers.Send.PushBack(func(r *request.Request) {
switch r.Data.(type) {
case *s3.CreateMultipartUploadOutput:
r.HTTPResponse.StatusCode = 400
}
})
mgr := s3manager.NewUploaderWithClient(s)
_, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: bytes.NewReader(make([]byte, 1024*1024*12)),
})
assert.Error(t, err)
assert.Equal(t, []string{"CreateMultipartUpload"}, *ops)
}
开发者ID:ColourboxDevelopment,项目名称:aws-sdk-go,代码行数:19,代码来源:upload_test.go
示例17: TestUploadZeroLenObject
func TestUploadZeroLenObject(t *testing.T) {
requestMade := false
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
requestMade = true
w.WriteHeader(http.StatusOK)
}))
mgr := s3manager.NewUploaderWithClient(s3.New(unit.Session, &aws.Config{
Endpoint: aws.String(server.URL),
}))
resp, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: strings.NewReader(""),
})
assert.NoError(t, err)
assert.True(t, requestMade)
assert.NotEqual(t, "", resp.Location)
assert.Equal(t, "", resp.UploadID)
}
开发者ID:ColourboxDevelopment,项目名称:aws-sdk-go,代码行数:20,代码来源:upload_test.go
示例18: TestUploadOrderMultiBufferedReaderEOF
// TestUploadOrderMultiBufferedReaderEOF tests the edge case where the
// file size is the same as part size, which means nextReader will
// return io.EOF rather than io.ErrUnexpectedEOF
func TestUploadOrderMultiBufferedReaderEOF(t *testing.T) {
s, ops, args := loggingSvc(emptyList)
mgr := s3manager.NewUploaderWithClient(s)
_, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: &sizedReader{size: 1024 * 1024 * 10, err: io.EOF},
})
assert.NoError(t, err)
assert.Equal(t, []string{"CreateMultipartUpload", "UploadPart", "UploadPart", "CompleteMultipartUpload"}, *ops)
// Part lengths
parts := []int{
buflen(val((*args)[1], "Body")),
buflen(val((*args)[2], "Body")),
}
sort.Ints(parts)
assert.Equal(t, []int{1024 * 1024 * 5, 1024 * 1024 * 5}, parts)
}
开发者ID:ColourboxDevelopment,项目名称:aws-sdk-go,代码行数:23,代码来源:upload_test.go
示例19: TestUploadOrderMultiBufferedReaderExceedTotalParts
func TestUploadOrderMultiBufferedReaderExceedTotalParts(t *testing.T) {
s, ops, _ := loggingSvc([]string{"UploadPart"})
mgr := s3manager.NewUploaderWithClient(s, func(u *s3manager.Uploader) {
u.Concurrency = 1
u.MaxUploadParts = 2
})
resp, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: &sizedReader{size: 1024 * 1024 * 12},
})
assert.Error(t, err)
assert.Nil(t, resp)
assert.Equal(t, []string{"CreateMultipartUpload", "AbortMultipartUpload"}, *ops)
aerr := err.(awserr.Error)
assert.Equal(t, "TotalPartsExceeded", aerr.Code())
assert.Contains(t, aerr.Message(), "configured MaxUploadParts (2)")
}
开发者ID:CNDonny,项目名称:scope,代码行数:20,代码来源:upload_test.go
示例20: TestUploadIncreasePartSize
func TestUploadIncreasePartSize(t *testing.T) {
s, ops, args := loggingSvc(emptyList)
mgr := s3manager.NewUploaderWithClient(s, func(u *s3manager.Uploader) {
u.Concurrency = 1
u.MaxUploadParts = 2
})
_, err := mgr.Upload(&s3manager.UploadInput{
Bucket: aws.String("Bucket"),
Key: aws.String("Key"),
Body: bytes.NewReader(buf12MB),
})
assert.NoError(t, err)
assert.Equal(t, int64(s3manager.DefaultDownloadPartSize), mgr.PartSize)
assert.Equal(t, []string{"CreateMultipartUpload", "UploadPart", "UploadPart", "CompleteMultipartUpload"}, *ops)
// Part lengths
assert.Equal(t, (1024*1024*6)+1, buflen(val((*args)[1], "Body")))
assert.Equal(t, (1024*1024*6)-1, buflen(val((*args)[2], "Body")))
}
开发者ID:ColourboxDevelopment,项目名称:aws-sdk-go,代码行数:20,代码来源:upload_test.go
注:本文中的github.com/aws/aws-sdk-go/service/s3/s3manager.NewUploaderWithClient函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论