Skip to content

Commit 336df4e

Browse files
authored
Upgrade to AWS SDK v2 (exoscale#3)
1 parent 935c9d5 commit 336df4e

443 files changed

Lines changed: 101336 additions & 1987 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

go.mod

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ module github.com/exoscale/packer-plugin-exoscale
33
go 1.15
44

55
require (
6-
github.com/aws/aws-sdk-go v1.36.5
6+
github.com/aws/aws-sdk-go-v2 v1.2.1
7+
github.com/aws/aws-sdk-go-v2/config v1.1.2
8+
github.com/aws/aws-sdk-go-v2/credentials v1.1.2
9+
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.0.3
10+
github.com/aws/aws-sdk-go-v2/service/s3 v1.2.1
711
github.com/deepmap/oapi-codegen v1.5.1 // indirect
812
github.com/exoscale/egoscale v0.43.1
913
github.com/gofrs/uuid v4.0.0+incompatible // indirect

go.sum

Lines changed: 26 additions & 116 deletions
Large diffs are not rendered by default.

post-processor/exoscale-import/post-processor.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ import (
55
"errors"
66
"fmt"
77

8+
"github.com/aws/aws-sdk-go-v2/aws"
9+
awsconfig "github.com/aws/aws-sdk-go-v2/config"
10+
"github.com/aws/aws-sdk-go-v2/credentials"
11+
"github.com/aws/aws-sdk-go-v2/service/s3"
812
"github.com/exoscale/egoscale"
913
"github.com/hashicorp/packer-plugin-sdk/multistep"
1014
"github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps"
@@ -27,6 +31,7 @@ type PostProcessor struct {
2731
config *Config
2832
runner multistep.Runner
2933
exo *egoscale.Client
34+
sos *s3.Client
3035
}
3136

3237
func (p *PostProcessor) Configure(raws ...interface{}) error {
@@ -53,9 +58,35 @@ func (p *PostProcessor) PostProcess(ctx context.Context, ui packer.Ui, a packer.
5358

5459
p.exo = egoscale.NewClient(p.config.APIEndpoint, p.config.APIKey, p.config.APISecret)
5560

61+
cfg, err := awsconfig.LoadDefaultConfig(
62+
ctx,
63+
awsconfig.WithRegion(p.config.TemplateZone),
64+
65+
awsconfig.WithEndpointResolver(aws.EndpointResolverFunc(
66+
func(service, region string) (aws.Endpoint, error) {
67+
return aws.Endpoint{
68+
URL: p.config.SOSEndpoint,
69+
SigningRegion: p.config.TemplateZone,
70+
}, nil
71+
})),
72+
73+
awsconfig.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(
74+
p.config.APIKey,
75+
p.config.APISecret,
76+
"")),
77+
)
78+
if err != nil {
79+
return nil, false, false, fmt.Errorf("unable to initialize SOS client: %s", err)
80+
}
81+
82+
p.sos = s3.NewFromConfig(cfg, func(o *s3.Options) {
83+
o.UsePathStyle = true
84+
})
85+
5686
state := new(multistep.BasicStateBag)
5787
state.Put("config", p.config)
5888
state.Put("exo", p.exo)
89+
state.Put("sos", p.sos)
5990
state.Put("ui", ui)
6091
state.Put("artifact", a)
6192

post-processor/exoscale-import/step_delete_image.go

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ import (
55
"fmt"
66
"path/filepath"
77

8-
"github.com/aws/aws-sdk-go/aws"
9-
"github.com/aws/aws-sdk-go/aws/credentials"
10-
"github.com/aws/aws-sdk-go/aws/session"
11-
"github.com/aws/aws-sdk-go/service/s3"
8+
"github.com/aws/aws-sdk-go-v2/aws"
9+
"github.com/aws/aws-sdk-go-v2/service/s3"
1210
"github.com/hashicorp/packer-plugin-sdk/multistep"
1311
"github.com/hashicorp/packer-plugin-sdk/packer"
1412
)
@@ -19,6 +17,7 @@ func (s *stepDeleteImage) Run(ctx context.Context, state multistep.StateBag) mul
1917
var (
2018
ui = state.Get("ui").(packer.Ui)
2119
config = state.Get("config").(*Config)
20+
sos = state.Get("sos").(*s3.Client)
2221
artifact = state.Get("artifact").(packer.Artifact)
2322

2423
imageFile = artifact.Files()[0]
@@ -31,20 +30,11 @@ func (s *stepDeleteImage) Run(ctx context.Context, state multistep.StateBag) mul
3130

3231
ui.Say("Deleting uploaded template image")
3332

34-
sess, err := session.NewSessionWithOptions(session.Options{Config: aws.Config{
35-
Region: aws.String(config.TemplateZone),
36-
Endpoint: aws.String(config.SOSEndpoint),
37-
Credentials: credentials.NewStaticCredentials(config.APIKey, config.APISecret, "")}})
38-
if err != nil {
39-
ui.Error(fmt.Sprintf("unable to initialize session: %v", err))
40-
return multistep.ActionHalt
41-
}
42-
43-
svc := s3.New(sess)
44-
if _, err := svc.DeleteObject(&s3.DeleteObjectInput{
45-
Bucket: aws.String(config.ImageBucket),
46-
Key: aws.String(bucketFile),
47-
}); err != nil {
33+
if _, err := sos.DeleteObject(ctx,
34+
&s3.DeleteObjectInput{
35+
Bucket: aws.String(config.ImageBucket),
36+
Key: aws.String(bucketFile),
37+
}); err != nil {
4838
ui.Error(fmt.Sprintf("unable to delete template image: %v", err))
4939
return multistep.ActionHalt
5040
}

post-processor/exoscale-import/step_upload_image.go

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import (
99
"os"
1010
"path/filepath"
1111

12-
"github.com/aws/aws-sdk-go/aws"
13-
"github.com/aws/aws-sdk-go/aws/credentials"
14-
"github.com/aws/aws-sdk-go/aws/session"
15-
"github.com/aws/aws-sdk-go/service/s3/s3manager"
12+
"github.com/aws/aws-sdk-go-v2/aws"
13+
s3manager "github.com/aws/aws-sdk-go-v2/feature/s3/manager"
14+
"github.com/aws/aws-sdk-go-v2/service/s3"
15+
s3types "github.com/aws/aws-sdk-go-v2/service/s3/types"
1616
"github.com/hashicorp/packer-plugin-sdk/multistep"
1717
"github.com/hashicorp/packer-plugin-sdk/packer"
1818
)
@@ -58,23 +58,16 @@ func (s *stepUploadImage) Run(ctx context.Context, state multistep.StateBag) mul
5858
return multistep.ActionHalt
5959
}
6060

61-
sess, err := session.NewSessionWithOptions(session.Options{Config: aws.Config{
62-
Region: aws.String(config.TemplateZone),
63-
Endpoint: aws.String(config.SOSEndpoint),
64-
Credentials: credentials.NewStaticCredentials(config.APIKey, config.APISecret, "")}})
65-
if err != nil {
66-
ui.Error(fmt.Sprintf("unable to initialize session: %v", err))
67-
return multistep.ActionHalt
68-
}
69-
70-
uploader := s3manager.NewUploader(sess)
71-
output, err := uploader.UploadWithContext(ctx, &s3manager.UploadInput{
72-
Body: pf,
73-
Bucket: aws.String(config.ImageBucket),
74-
Key: aws.String(bucketFile),
75-
ContentMD5: aws.String(base64.StdEncoding.EncodeToString(hash.Sum(nil))),
76-
ACL: aws.String("public-read"),
77-
})
61+
output, err := s3manager.
62+
NewUploader(state.Get("sos").(*s3.Client)).
63+
Upload(ctx,
64+
&s3.PutObjectInput{
65+
Bucket: aws.String(config.ImageBucket),
66+
Key: aws.String(bucketFile),
67+
Body: pf,
68+
ContentMD5: aws.String(base64.StdEncoding.EncodeToString(hash.Sum(nil))),
69+
ACL: s3types.ObjectCannedACLPublicRead,
70+
})
7871
if err != nil {
7972
ui.Error(fmt.Sprintf("unable to upload template image: %v", err))
8073
return multistep.ActionHalt

vendor/github.com/aws/aws-sdk-go-v2/LICENSE.txt

Lines changed: 202 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go-v2/NOTICE.txt

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)