Skip to content

Commit

Permalink
Merge pull request #98 from pluralsh/upgrade-aws-go
Browse files Browse the repository at this point in the history
upgrade to aws-sdk-go-v2
  • Loading branch information
michaeljguarino committed Jun 25, 2022
2 parents 61d2348 + 2ff1534 commit a3f8f24
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 37 deletions.
25 changes: 22 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,9 @@ require (
github.com/Azure/go-autorest/autorest/azure/auth v0.5.7
github.com/Azure/go-autorest/autorest/to v0.4.0
github.com/Masterminds/sprig/v3 v3.2.2
github.com/aws/aws-sdk-go v1.35.35
github.com/azure/azure-sdk-for-go v57.4.0+incompatible
github.com/buger/goterm v1.0.0
github.com/chartmuseum/helm-push v0.10.2
github.com/cli/oauth v0.9.0
github.com/coreos/go-semver v0.3.0
github.com/fatih/color v1.13.0
github.com/gin-gonic/gin v1.7.7
Expand Down Expand Up @@ -58,6 +56,24 @@ require (
sigs.k8s.io/yaml v1.3.0
)

require (
github.com/aws/aws-sdk-go-v2 v1.16.4 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.1 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.12.4 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.5 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.11 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.5 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.12 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.2 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.1 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.6 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.5 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.5 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.11.7 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.16.6 // indirect
github.com/aws/smithy-go v1.11.2 // indirect
)

require (
cloud.google.com/go v0.100.2 // indirect
cloud.google.com/go/iam v0.3.0 // indirect
Expand All @@ -81,6 +97,9 @@ require (
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/acomagu/bufpipe v1.0.3 // indirect
github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 // indirect
github.com/aws/aws-sdk-go-v2/config v1.15.9
github.com/aws/aws-sdk-go-v2/service/ec2 v1.45.0
github.com/aws/aws-sdk-go-v2/service/s3 v1.26.10
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 // indirect
Expand Down Expand Up @@ -171,7 +190,7 @@ require (
github.com/opencontainers/image-spec v1.0.2 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pluralsh/oauth v0.9.1-0.20220520000222-d76c0e7a0db9 // indirect
github.com/pluralsh/oauth v0.9.1-0.20220520000222-d76c0e7a0db9
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_golang v1.11.0 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
Expand Down
44 changes: 36 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -229,8 +229,42 @@ github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZo
github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.34.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
github.com/aws/aws-sdk-go v1.35.35 h1:o/EbgEcIPWga7GWhJhb3tiaxqk4/goTdo5YEMdnVxgE=
github.com/aws/aws-sdk-go v1.35.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
github.com/aws/aws-sdk-go-v2 v1.16.4 h1:swQTEQUyJF/UkEA94/Ga55miiKFoXmm/Zd67XHgmjSg=
github.com/aws/aws-sdk-go-v2 v1.16.4/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.1 h1:SdK4Ppk5IzLs64ZMvr6MrSficMtjY2oS0WOORXTlxwU=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.1/go.mod h1:n8Bs1ElDD2wJ9kCRTczA83gYbBmjSwZp3umc6zF4EeM=
github.com/aws/aws-sdk-go-v2/config v1.15.9 h1:TK5yNEnFDQ9iaO04gJS/3Y+eW8BioQiCUafW75/Wc3Q=
github.com/aws/aws-sdk-go-v2/config v1.15.9/go.mod h1:rv/l/TbZo67kp99v/3Kb0qV6Fm1KEtKyruEV2GvVfgs=
github.com/aws/aws-sdk-go-v2/credentials v1.12.4 h1:xggwS+qxCukXRVXJBJWQJGyUsvuxGC8+J1kKzv2cxuw=
github.com/aws/aws-sdk-go-v2/credentials v1.12.4/go.mod h1:7g+GGSp7xtR823o1jedxKmqRZGqLdoHQfI4eFasKKxs=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.5 h1:YPxclBeE07HsLQE8vtjC8T2emcTjM9nzqsnDi2fv5UM=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.5/go.mod h1:WAPnuhG5IQ/i6DETFl5NmX3kKqCzw7aau9NHAGcm4QE=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.11 h1:gsqHplNh1DaQunEKZISK56wlpbCg0yKxNVvGWCFuF1k=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.11/go.mod h1:tmUB6jakq5DFNcXsXOA/ZQ7/C8VnSKYkx58OI7Fh79g=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.5 h1:PLFj+M2PgIDHG//hw3T0O0KLI4itVtAjtxrZx4AHPLg=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.5/go.mod h1:fV1AaS2gFc1tM0RCb015FJ0pvWVUfJZANzjwoO4YakM=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.12 h1:j0VqrjtgsY1Bx27tD0ysay36/K4kFMWRp9K3ieO9nLU=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.12/go.mod h1:00c7+ALdPh4YeEUPXJzyU0Yy01nPGOq2+9rUaz05z9g=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.2 h1:1fs9WkbFcMawQjxEI0B5L0SqvBhJZebxWM6Z3x/qHWY=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.2/go.mod h1:0jDVeWUFPbI3sOfsXXAsIdiawXcn7VBLx/IlFVTRP64=
github.com/aws/aws-sdk-go-v2/service/ec2 v1.45.0 h1:LxCklDNKY9bynYMaDetR/zAh9kbkdSkrEzfq4L4Lhdw=
github.com/aws/aws-sdk-go-v2/service/ec2 v1.45.0/go.mod h1:b2SVOmsP7A9VlTpfkJAVbU3d+TQfD76x9IUNbvynAbM=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.1 h1:T4pFel53bkHjL2mMo+4DKE6r6AuoZnM0fg7k1/ratr4=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.1/go.mod h1:GeUru+8VzrTXV/83XyMJ80KpH8xO89VPoUileyNQ+tc=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.6 h1:9mvDAsMiN+07wcfGM+hJ1J3dOKZ2YOpDiPZ6ufRJcgw=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.6/go.mod h1:Eus+Z2iBIEfhOvhSdMTcscNOMy6n3X9/BJV0Zgax98w=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.5 h1:gRW1ZisKc93EWEORNJRvy/ZydF3o6xLSveJHdi1Oa0U=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.5/go.mod h1:ZbkttHXaVn3bBo/wpJbQGiiIWR90eTBUVBrEHUEQlho=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.5 h1:DyPYkrH4R2zn+Pdu6hM3VTuPsQYAE6x2WB24X85Sgw0=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.5/go.mod h1:XtL92YWo0Yq80iN3AgYRERJqohg4TozrqRlxYhHGJ7g=
github.com/aws/aws-sdk-go-v2/service/s3 v1.26.10 h1:GWdLZK0r1AK5sKb8rhB9bEXqXCK8WNuyv4TBAD6ZviQ=
github.com/aws/aws-sdk-go-v2/service/s3 v1.26.10/go.mod h1:+O7qJxF8nLorAhuIVhYTHse6okjHJJm4EwhhzvpnkT0=
github.com/aws/aws-sdk-go-v2/service/sso v1.11.7 h1:suAGD+RyiHWPPihZzY+jw4mCZlOFWgmdjb2AeTenz7c=
github.com/aws/aws-sdk-go-v2/service/sso v1.11.7/go.mod h1:TFVe6Rr2joVLsYQ1ABACXgOC6lXip/qpX2x5jWg/A9w=
github.com/aws/aws-sdk-go-v2/service/sts v1.16.6 h1:aYToU0/iazkMY67/BYLt3r6/LT/mUtarLAF5mGof1Kg=
github.com/aws/aws-sdk-go-v2/service/sts v1.16.6/go.mod h1:rP1rEOKAGZoXp4iGDxSXFvODAtXpm34Egf0lL0eshaQ=
github.com/aws/smithy-go v1.11.2 h1:eG/N+CcUMAvsdffgMvjMKwfyDzIkjM6pfxMJ8Mzc6mE=
github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM=
github.com/azure/azure-sdk-for-go v57.4.0+incompatible h1:7PXrQ3NrC+hNtFlZtz8rSJi+mMolgghHh+I5db6yeUw=
github.com/azure/azure-sdk-for-go v57.4.0+incompatible/go.mod h1:tOiTyk5ut55mEEo/hYwMIa79Jn9AkErVBTmJ3I0ZlfY=
github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
Expand Down Expand Up @@ -295,8 +329,6 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
github.com/cli/browser v1.0.0 h1:RIleZgXrhdiCVgFBSjtWwkLPUCWyhhhN5k5HGSBt1js=
github.com/cli/browser v1.0.0/go.mod h1:IEWkHYbLjkhtjwwWlwTHW2lGxeS5gezEQBMLTwDHf5Q=
github.com/cli/oauth v0.9.0 h1:nxBC0Df4tUzMkqffAB+uZvisOwT3/N9FpkfdTDtafxc=
github.com/cli/oauth v0.9.0/go.mod h1:qd/FX8ZBD6n1sVNQO3aIdRxeu5LGw9WhKnYhIIoC2A4=
github.com/cli/safeexec v1.0.0 h1:0VngyaIyqACHdcMNWfo6+KdUYnqEr2Sg+bSP1pdF+dI=
github.com/cli/safeexec v1.0.0/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5zx3Q=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
Expand Down Expand Up @@ -1224,10 +1256,6 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
github.com/pluralsh/oauth v0.9.1-0.20220519234934-e164dab4f478 h1:Fucoo8ws4dOhuN/uwqTWpIjCRofneJOrOO4z/yX1u6w=
github.com/pluralsh/oauth v0.9.1-0.20220519234934-e164dab4f478/go.mod h1:aTUw/75rzcsbvW+/TLvWtHVDXFIdtFrDtUncOq9vHyM=
github.com/pluralsh/oauth v0.9.1-0.20220519235719-62ca5425e24c h1:UwSYY3O4lCKj4SPRDmEdKdf/vbqKFKSoRZ5Omsr1b9g=
github.com/pluralsh/oauth v0.9.1-0.20220519235719-62ca5425e24c/go.mod h1:aTUw/75rzcsbvW+/TLvWtHVDXFIdtFrDtUncOq9vHyM=
github.com/pluralsh/oauth v0.9.1-0.20220520000222-d76c0e7a0db9 h1:bMkXXUksi9ym+enaNlvds/BUg7SkZ/3ir8D3OsznA+E=
github.com/pluralsh/oauth v0.9.1-0.20220520000222-d76c0e7a0db9/go.mod h1:aTUw/75rzcsbvW+/TLvWtHVDXFIdtFrDtUncOq9vHyM=
github.com/pluralsh/plural-operator v0.1.4 h1:P+aqlwqN80Tp5c449/6XGYAqWuUrKImiDuBQPmAiy0U=
Expand Down
69 changes: 43 additions & 26 deletions pkg/provider/aws.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package provider

import (
"context"
"encoding/json"
"fmt"
"os/exec"

"github.com/AlecAivazis/survey/v2"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ec2"
"github.com/aws/aws-sdk-go/service/s3"
awsConfig "github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/ec2"
ec2Types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
"github.com/aws/aws-sdk-go-v2/service/s3"
s3Types "github.com/aws/aws-sdk-go-v2/service/s3/types"
"github.com/pluralsh/plural/pkg/config"
"github.com/pluralsh/plural/pkg/manifest"
"github.com/pluralsh/plural/pkg/template"
Expand All @@ -23,8 +25,9 @@ type AWSProvider struct {
project string
bucket string
Reg string `survey:"region"`
storageClient *s3.S3
storageClient *s3.Client
writer manifest.Writer
goContext *context.Context
}

var (
Expand Down Expand Up @@ -73,15 +76,19 @@ func mkAWS(conf config.Config) (provider *AWSProvider, err error) {
return
}

client, err := getClient(provider.Reg)
ctx := context.Background()

provider.goContext = &ctx

client, err := getClient(provider.Reg, *provider.goContext)
if err != nil {
return
}

account, err := GetAwsAccount()
if err != nil {
err = errors.ErrorWrap(err, "Failed to get aws account (is your aws cli configured?)")
return
return
}

if len(account) <= 0 {
Expand All @@ -106,25 +113,26 @@ func mkAWS(conf config.Config) (provider *AWSProvider, err error) {
}

func awsFromManifest(man *manifest.ProjectManifest) (*AWSProvider, error) {
client, err := getClient(man.Region)
ctx := context.Background()
context := &ctx
client, err := getClient(man.Region, *context)
if err != nil {
return nil, err
}

return &AWSProvider{man.Cluster, man.Project, man.Bucket, man.Region, client, nil}, nil
return &AWSProvider{man.Cluster, man.Project, man.Bucket, man.Region, client, nil, context}, nil
}

func getClient(region string) (*s3.S3, error) {
sess, err := session.NewSessionWithOptions(session.Options{
Config: aws.Config{Region: aws.String(region)},
SharedConfigState: session.SharedConfigEnable,
})
func getClient(region string, context context.Context) (*s3.Client, error) {
cfg, err := awsConfig.LoadDefaultConfig(context)

if err != nil {
return nil, errors.ErrorWrap(err, "Failed to initialize aws client: ")
}

return s3.New(sess), nil
cfg.Region = region

return s3.NewFromConfig(cfg), nil
}

func (aws *AWSProvider) CreateBackend(prefix string, ctx map[string]interface{}) (string, error) {
Expand Down Expand Up @@ -158,10 +166,17 @@ func (aws *AWSProvider) KubeConfig() error {

func (p *AWSProvider) mkBucket(name string) error {
client := p.storageClient
_, err := client.HeadBucket(&s3.HeadBucketInput{Bucket: aws.String(name)})
_, err := client.HeadBucket(*p.goContext, &s3.HeadBucketInput{Bucket: &name})

if err != nil {
_, err = client.CreateBucket(&s3.CreateBucketInput{Bucket: aws.String(name)})
_, err = client.CreateBucket(*p.goContext,
&s3.CreateBucketInput{
Bucket: &name,
CreateBucketConfiguration: &s3Types.CreateBucketConfiguration{
LocationConstraint: s3Types.BucketLocationConstraint(p.Region()),
},
},
)
return err
}

Expand Down Expand Up @@ -204,18 +219,20 @@ func (aws *AWSProvider) Flush() error {
}

func (prov *AWSProvider) Decommision(node *v1.Node) error {
sess, err := session.NewSession(&aws.Config{
Region: aws.String(prov.Region()),
})
cfg, err := awsConfig.LoadDefaultConfig(*prov.goContext)

if err != nil {
return errors.ErrorWrap(err, "Failed to establish aws session")
}

svc := ec2.New(sess)
instances, err := svc.DescribeInstances(&ec2.DescribeInstancesInput{
Filters: []*ec2.Filter{
{Name: aws.String("private-dns-name"), Values: []*string{aws.String(node.ObjectMeta.Name)}},
cfg.Region = prov.Region()

name := "private-dns-name"

svc := ec2.NewFromConfig(cfg)
instances, err := svc.DescribeInstances(*prov.goContext, &ec2.DescribeInstancesInput{
Filters: []ec2Types.Filter{
{Name: &name, Values: []string{node.ObjectMeta.Name}},
},
})

Expand All @@ -225,8 +242,8 @@ func (prov *AWSProvider) Decommision(node *v1.Node) error {

instance := instances.Reservations[0].Instances[0]

_, err = svc.TerminateInstances(&ec2.TerminateInstancesInput{
InstanceIds: []*string{instance.InstanceId},
_, err = svc.TerminateInstances(*prov.goContext, &ec2.TerminateInstancesInput{
InstanceIds: []string{*instance.InstanceId},
})

return errors.ErrorWrap(err, "failed to terminate instance")
Expand Down

0 comments on commit a3f8f24

Please sign in to comment.