Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PBM-1474 - Swap AWS s3 v1 with v2 #1083

Merged
merged 39 commits into from
Feb 24, 2025
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
ee25aa4
use v2 sdk - wip
veceraj Jan 22, 2025
e65ffa5
migrate download
veceraj Jan 22, 2025
e85cd46
update
veceraj Jan 22, 2025
d4ccc3d
change mod
veceraj Jan 22, 2025
67d5c3b
update version in compress
veceraj Jan 23, 2025
98b1949
remove v1
veceraj Jan 23, 2025
50446f6
update vendor
veceraj Jan 23, 2025
2853a2a
use ForcePathStyle
veceraj Jan 24, 2025
4ce09bf
cleanup
veceraj Jan 24, 2025
b28103c
check not found
veceraj Jan 26, 2025
66f91f5
update doc for delete
veceraj Jan 26, 2025
e064043
implement logger
veceraj Jan 26, 2025
c1cf838
update go mod
veceraj Jan 26, 2025
bd77e52
update status
veceraj Jan 26, 2025
0d31425
Merge branch 'dev' of https://github.com/percona/percona-backup-mongo…
veceraj Jan 26, 2025
833db57
rename imports
veceraj Jan 26, 2025
792a1d8
resolve gofmt
veceraj Jan 26, 2025
e005f3c
resolve deprecated
veceraj Jan 26, 2025
fc18f23
Merge branch 'PBM-1474-aws-s3-migration' of https://github.com/percon…
veceraj Jan 26, 2025
f6cad0c
cleanup
veceraj Jan 26, 2025
83dbbac
resolve gcs bug
veceraj Jan 28, 2025
fc3636f
wip gcs changes
veceraj Jan 29, 2025
66728a5
fix reviewdog
veceraj Jan 29, 2025
3745dc0
fix special chars
veceraj Jan 30, 2025
5d4ec2a
fix sse-c
veceraj Feb 3, 2025
3f02f4f
add check for AES to copy
veceraj Feb 3, 2025
2ba754a
apply fix to download
veceraj Feb 4, 2025
fa4a615
resolve comments
veceraj Feb 5, 2025
dfa699f
remove gcs tweaks
veceraj Feb 5, 2025
4a6c769
revert
veceraj Feb 6, 2025
c323583
review updates
veceraj Feb 14, 2025
831accd
use context with timeout
veceraj Feb 14, 2025
9815da9
Merge branch 'dev' of https://github.com/percona/percona-backup-mongo…
veceraj Feb 17, 2025
92256b8
update retyer
veceraj Feb 18, 2025
bb79546
fix review
veceraj Feb 18, 2025
f5bcddc
remove timeout from operations
veceraj Feb 18, 2025
514395e
update retryer
veceraj Feb 18, 2025
88b36f4
Merge branch 'dev' into PBM-1474-aws-s3-migration
veceraj Feb 18, 2025
4674e04
Merge branch 'dev' into PBM-1474-aws-s3-migration
veceraj Feb 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
21 changes: 19 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,13 @@ go 1.22
require (
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.1
github.com/aws/aws-sdk-go v1.55.5
github.com/aws/aws-sdk-go-v2 v1.33.0
github.com/aws/aws-sdk-go-v2/config v1.29.0
github.com/aws/aws-sdk-go-v2/credentials v1.17.53
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.50
github.com/aws/aws-sdk-go-v2/service/s3 v1.73.0
github.com/aws/aws-sdk-go-v2/service/sts v1.33.8
github.com/aws/smithy-go v1.22.1
github.com/docker/docker v27.1.1+incompatible
github.com/fsnotify/fsnotify v1.7.0
github.com/golang/snappy v0.0.4
Expand All @@ -30,6 +36,18 @@ require (
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.28 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.0 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.9 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.24.10 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.9 // indirect
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
github.com/containerd/containerd v1.7.18 // indirect
github.com/containerd/log v0.1.0 // indirect
Expand All @@ -47,7 +65,6 @@ require (
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jessevdk/go-flags v1.5.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
Expand Down
45 changes: 38 additions & 7 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,44 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.2.1 h1:DzHpqpoJVaC
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/aws/aws-sdk-go-v2 v1.33.0 h1:Evgm4DI9imD81V0WwD+TN4DCwjUMdc94TrduMLbgZJs=
github.com/aws/aws-sdk-go-v2 v1.33.0/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 h1:lL7IfaFzngfx0ZwUGOZdsFFnQ5uLvR0hWqqhyE7Q9M8=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7/go.mod h1:QraP0UcVlQJsmHfioCrveWOC1nbiWUl3ej08h4mXWoc=
github.com/aws/aws-sdk-go-v2/config v1.29.0 h1:Vk/u4jof33or1qAQLdofpjKV7mQQT7DcUpnYx8kdmxY=
github.com/aws/aws-sdk-go-v2/config v1.29.0/go.mod h1:iXAZK3Gxvpq3tA+B9WaDYpZis7M8KFgdrDPMmHrgbJM=
github.com/aws/aws-sdk-go-v2/credentials v1.17.53 h1:lwrVhiEDW5yXsuVKlFVUnR2R50zt2DklhOyeLETqDuE=
github.com/aws/aws-sdk-go-v2/credentials v1.17.53/go.mod h1:CkqM1bIw/xjEpBMhBnvqUXYZbpCFuj6dnCAyDk2AtAY=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24 h1:5grmdTdMsovn9kPZPI23Hhvp0ZyNm5cRO+IZFIYiAfw=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.24/go.mod h1:zqi7TVKTswH3Ozq28PkmBmgzG1tona7mo9G2IJg4Cis=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.50 h1:3G2kFXgvcXDVOv+bvvGqqi3oeN5bu3cQETQCDTgHI1M=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.50/go.mod h1:DUYbS20/A94Pz3YX1h9Y030zzQ5SFpvGMdGNCU61rQw=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28 h1:igORFSiH3bfq4lxKFkTSYDhJEUCYo6C8VKiWJjYwQuQ=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.28/go.mod h1:3So8EA/aAYm36L7XIvCVwLa0s5N0P7o2b1oqnx/2R4g=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28 h1:1mOW9zAUMhTSrMDssEHS/ajx8JcAj/IcftzcmNlmVLI=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.28/go.mod h1:kGlXVIWDfvt2Ox5zEaNglmq0hXPHgQFNMix33Tw22jA=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.28 h1:7kpeALOUeThs2kEjlAxlADAVfxKmkYAedlpZ3kdoSJ4=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.28/go.mod h1:pyaOYEdp1MJWgtXLy6q80r3DhsVdOIOZNB9hdTcJIvI=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.0 h1:pC19SLXdHsfXTvCwy3sHfiACXaSjRkKlOQYnaTk8loI=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.0/go.mod h1:dIW8puxSbYLSPv/ju0d9A3CpwXdtqvJtYKDMVmPLOWE=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9 h1:TQmKDyETFGiXVhZfQ/I0cCFziqqX58pi4tKJGYGFSz0=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.9/go.mod h1:HVLPK2iHQBUx7HfZeOQSEu3v2ubZaAY2YPbAm5/WUyY=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.9 h1:2aInXbh02XsbO0KobPGMNXyv2QP73VDKsWPNJARj/+4=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.9/go.mod h1:dgXS1i+HgWnYkPXqNoPIPKeUsUUYHaUbThC90aDnNiE=
github.com/aws/aws-sdk-go-v2/service/s3 v1.73.0 h1:sHF4brL/726nbTldh8GGDKFS5LsQ8FwOTKEyvKp9DB4=
github.com/aws/aws-sdk-go-v2/service/s3 v1.73.0/go.mod h1:rGHXqEgGFrz7j58tIGKKAfD1fJzYXeKkN/Jn3eIRZYE=
github.com/aws/aws-sdk-go-v2/service/sso v1.24.10 h1:DyZUj3xSw3FR3TXSwDhPhuZkkT14QHBiacdbUVcD0Dg=
github.com/aws/aws-sdk-go-v2/service/sso v1.24.10/go.mod h1:Ro744S4fKiCCuZECXgOi760TiYylUM8ZBf6OGiZzJtY=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.9 h1:I1TsPEs34vbpOnR81GIcAq4/3Ud+jRHVGwx6qLQUHLs=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.9/go.mod h1:Fzsj6lZEb8AkTE5S68OhcbBqeWPsR8RnGuKPr8Todl8=
github.com/aws/aws-sdk-go-v2/service/sts v1.33.8 h1:pqEJQtlKWvnv3B6VRt60ZmsHy3SotlEBvfUBPB1KVcM=
github.com/aws/aws-sdk-go-v2/service/sts v1.33.8/go.mod h1:f6vjfZER1M17Fokn0IzssOTMT2N8ZSq+7jnNF0tArvw=
github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro=
github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao=
Expand Down Expand Up @@ -82,10 +118,6 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
Expand Down Expand Up @@ -306,7 +338,6 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
Expand Down
2 changes: 1 addition & 1 deletion pbm/compress/compress.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"io"
"runtime"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/golang/snappy"
"github.com/klauspost/compress/s2"
"github.com/klauspost/compress/zstd"
Expand Down
36 changes: 19 additions & 17 deletions pbm/storage/s3/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import (
"container/heap"
"context"
"crypto/md5"
"encoding/base64"
"fmt"
Expand All @@ -12,9 +13,10 @@
"sync/atomic"
"time"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3/types"
smithyhttp "github.com/aws/smithy-go/transport/http"

"github.com/percona/percona-backup-mongodb/pbm/errors"
"github.com/percona/percona-backup-mongodb/pbm/log"
Expand Down Expand Up @@ -188,7 +190,7 @@
written int64
chunkSize int64

getSess func() (*s3.S3, error)
getSess func() (*s3.Client, error)
l log.LogEvent
opts *Config
buf []byte // preallocated buf for io.Copy
Expand All @@ -207,13 +209,13 @@
fname: fname,
fsize: fsize,
chunkSize: int64(chunkSize),
getSess: func() (*s3.S3, error) {
sess, err := s.s3session()
getSess: func() (*s3.Client, error) {
cli, err := s.s3client()
if err != nil {
return nil, err
}
sess.Client.Config.HTTPClient.Timeout = time.Second * 60
return sess, nil
// sess.Client.Config.HTTPClient.Timeout = time.Second * 60
return cli, nil
},
}
}
Expand All @@ -229,7 +231,7 @@
}

// a queue (heap) for out-of-order chunks
type chunksQueue []*chunk

Check failure on line 234 in pbm/storage/s3/download.go

View workflow job for this annotation

GitHub Actions / runner / golangci-lint

the methods of "chunksQueue" use pointer receiver and non-pointer receiver. (recvcheck)

func (b chunksQueue) Len() int { return len(b) }
func (b chunksQueue) Less(i, j int) bool { return b[i].meta.start < b[j].meta.start }
Expand Down Expand Up @@ -379,7 +381,7 @@
}
}

func (pr *partReader) retryChunk(buf *arena, s *s3.S3, start, end int64, retries int) (io.ReadCloser, error) {
func (pr *partReader) retryChunk(buf *arena, s *s3.Client, start, end int64, retries int) (io.ReadCloser, error) {
var r io.ReadCloser
var err error

Expand All @@ -402,7 +404,7 @@
return nil, err
}

func (pr *partReader) tryChunk(buf *arena, s *s3.S3, start, end int64) (io.ReadCloser, error) {
func (pr *partReader) tryChunk(buf *arena, s *s3.Client, start, end int64) (io.ReadCloser, error) {
// just quickly retry w/o new session in case of fail.
// more sophisticated retry on a caller side.
const retry = 2
Expand All @@ -425,7 +427,7 @@
return nil, errors.Wrapf(err, "failed to download chunk %d-%d (of %d) after %d retries", start, end, pr.fsize, retry)
}

func (pr *partReader) getChunk(buf *arena, s *s3.S3, start, end int64) (io.ReadCloser, error) {
func (pr *partReader) getChunk(buf *arena, s *s3.Client, start, end int64) (io.ReadCloser, error) {
getObjOpts := &s3.GetObjectInput{
Bucket: aws.String(pr.opts.Bucket),
Key: aws.String(path.Join(pr.opts.Prefix, pr.fname)),
Expand All @@ -436,20 +438,20 @@
if sse != nil && sse.SseCustomerAlgorithm != "" {
getObjOpts.SSECustomerAlgorithm = aws.String(sse.SseCustomerAlgorithm)
decodedKey, err := base64.StdEncoding.DecodeString(sse.SseCustomerKey)
getObjOpts.SSECustomerKey = aws.String(string(decodedKey))
getObjOpts.SSECustomerKey = aws.String(sse.SseCustomerKey)
if err != nil {
return nil, errors.Wrap(err, "SseCustomerAlgorithm specified with invalid SseCustomerKey")
}
keyMD5 := md5.Sum(decodedKey)
getObjOpts.SSECustomerKeyMD5 = aws.String(base64.StdEncoding.EncodeToString(keyMD5[:]))
}

s3obj, err := s.GetObject(getObjOpts)
s3obj, err := s.GetObject(context.Background(), getObjOpts)
if err != nil {
// if object size is undefined, we would read
// until HTTP code 416 (Requested Range Not Satisfiable)
rerr, ok := err.(awserr.RequestFailure) //nolint:errorlint
if ok && rerr.StatusCode() == http.StatusRequestedRangeNotSatisfiable {
var re *smithyhttp.ResponseError
if errors.As(err, &re) && re.Err != nil && re.Response.StatusCode == http.StatusRequestedRangeNotSatisfiable {
return nil, io.EOF
}

Expand All @@ -459,8 +461,8 @@
defer s3obj.Body.Close()

if sse != nil {
if sse.SseAlgorithm == s3.ServerSideEncryptionAwsKms {
s3obj.ServerSideEncryption = aws.String(sse.SseAlgorithm)
if sse.SseAlgorithm == string(types.ServerSideEncryptionAwsKms) {
s3obj.ServerSideEncryption = types.ServerSideEncryptionAwsKms
s3obj.SSEKMSKeyId = aws.String(sse.KmsKeyID)
} else if sse.SseCustomerAlgorithm != "" {
s3obj.SSECustomerAlgorithm = aws.String(sse.SseCustomerAlgorithm)
Expand Down
Loading
Loading