1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
12 "git.arvados.org/arvados.git/sdk/go/arvadostest"
13 "github.com/aws/aws-sdk-go-v2/aws"
14 "github.com/aws/aws-sdk-go-v2/aws/defaults"
15 "github.com/aws/aws-sdk-go-v2/aws/ec2metadata"
16 "github.com/aws/aws-sdk-go-v2/aws/ec2rolecreds"
17 "github.com/aws/aws-sdk-go-v2/aws/endpoints"
18 "github.com/aws/aws-sdk-go-v2/service/s3"
19 check "gopkg.in/check.v1"
22 func (s *IntegrationSuite) TestS3AWSSDK(c *check.C) {
24 defer stage.teardown(c)
26 cfg := defaults.Config()
27 cfg.Credentials = aws.NewChainProvider([]aws.CredentialsProvider{
28 aws.NewStaticCredentialsProvider(arvadostest.ActiveTokenUUID, arvadostest.ActiveToken, ""),
29 ec2rolecreds.New(ec2metadata.New(cfg)),
31 cfg.EndpointResolver = aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) {
34 URL: "http://" + s.testServer.Addr,
35 SigningRegion: "custom-signing-region",
38 return endpoints.NewDefaultResolver().ResolveEndpoint(service, region)
42 client.ForcePathStyle = true
43 listreq := client.ListObjectsV2Request(&s3.ListObjectsV2Input{
44 Bucket: aws.String(arvadostest.FooCollection),
45 MaxKeys: aws.Int64(100),
46 Prefix: aws.String(""),
47 ContinuationToken: nil,
49 resp, err := listreq.Send(context.Background())
50 c.Assert(err, check.IsNil)
51 c.Check(resp.Contents, check.HasLen, 1)
52 for _, key := range resp.Contents {
53 c.Check(*key.Key, check.Equals, "foo")
56 p := make([]byte, 100000000)
60 putreq := client.PutObjectRequest(&s3.PutObjectInput{
61 Body: bytes.NewReader(p),
62 Bucket: aws.String(stage.collbucket.Name),
63 ContentType: aws.String("application/octet-stream"),
64 Key: aws.String("aaaa"),
66 _, err = putreq.Send(context.Background())
67 c.Assert(err, check.IsNil)
69 getreq := client.GetObjectRequest(&s3.GetObjectInput{
70 Bucket: aws.String(stage.collbucket.Name),
71 Key: aws.String("aaaa"),
73 getresp, err := getreq.Send(context.Background())
74 c.Assert(err, check.IsNil)
75 getdata, err := ioutil.ReadAll(getresp.Body)
76 c.Assert(err, check.IsNil)
77 c.Check(bytes.Equal(getdata, p), check.Equals, true)