diff --git a/pkg/core/certifier/challengers/dns01/aws-lightsail/internal/lego.go b/pkg/core/certifier/challengers/dns01/aws-lightsail/internal/lego.go index d90023dd0..9f36596b9 100644 --- a/pkg/core/certifier/challengers/dns01/aws-lightsail/internal/lego.go +++ b/pkg/core/certifier/challengers/dns01/aws-lightsail/internal/lego.go @@ -3,16 +3,14 @@ package internal import ( "context" "fmt" - "math/rand/v2" "strconv" "time" - "github.com/aws/aws-sdk-go-v2/aws" - "github.com/aws/aws-sdk-go-v2/aws/retry" - awsconfig "github.com/aws/aws-sdk-go-v2/config" - "github.com/aws/aws-sdk-go-v2/credentials" + aws "github.com/aws/aws-sdk-go-v2/aws" + awscfg "github.com/aws/aws-sdk-go-v2/config" + awscred "github.com/aws/aws-sdk-go-v2/credentials" "github.com/aws/aws-sdk-go-v2/service/lightsail" - awstypes "github.com/aws/aws-sdk-go-v2/service/lightsail/types" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/go-acme/lego/v5/challenge" "github.com/go-acme/lego/v5/challenge/dns01" "github.com/go-acme/lego/v5/platform/env" @@ -68,19 +66,9 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) { } ctx := context.Background() - cfg, err := awsconfig.LoadDefaultConfig(ctx, - awsconfig.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(config.AccessKeyID, config.SecretAccessKey, config.SessionToken)), - awsconfig.WithRegion(config.Region), - awsconfig.WithRetryer(func() aws.Retryer { - return retry.NewStandard(func(options *retry.StandardOptions) { - options.MaxAttempts = maxRetries - options.Backoff = retry.BackoffDelayerFunc(func(attempt int, err error) (time.Duration, error) { - retryCount := min(attempt, 7) - delay := (1 << uint(retryCount)) * (rand.IntN(50) + 200) - return time.Duration(delay) * time.Millisecond, nil - }) - }) - }), + cfg, err := awscfg.LoadDefaultConfig(ctx, + awscfg.WithCredentialsProvider(awscred.NewStaticCredentialsProvider(config.AccessKeyID, config.SecretAccessKey, config.SessionToken)), + awscfg.WithRegion(config.Region), ) if err != nil { return nil, err @@ -102,7 +90,7 @@ func (d *DNSProvider) Present(ctx context.Context, domain, _, keyAuth string) er if _, err := d.client.CreateDomainEntry(ctx, &lightsail.CreateDomainEntryInput{ DomainName: aws.String(dns01.UnFqdn(authZone)), - DomainEntry: &awstypes.DomainEntry{ + DomainEntry: &types.DomainEntry{ Type: aws.String("TXT"), Name: aws.String(info.EffectiveFQDN), Target: aws.String(strconv.Quote(info.Value)), @@ -124,7 +112,7 @@ func (d *DNSProvider) CleanUp(ctx context.Context, domain, _, keyAuth string) er if _, err := d.client.DeleteDomainEntry(ctx, &lightsail.DeleteDomainEntryInput{ DomainName: aws.String(dns01.UnFqdn(authZone)), - DomainEntry: &awstypes.DomainEntry{ + DomainEntry: &types.DomainEntry{ Type: aws.String("TXT"), Name: aws.String(info.EffectiveFQDN), Target: aws.String(strconv.Quote(info.Value)), diff --git a/pkg/core/certmgr/providers/aws-acm/aws_acm.go b/pkg/core/certmgr/providers/aws-acm/aws_acm.go index d130c8e59..da6084b1a 100644 --- a/pkg/core/certmgr/providers/aws-acm/aws_acm.go +++ b/pkg/core/certmgr/providers/aws-acm/aws_acm.go @@ -10,7 +10,7 @@ import ( aws "github.com/aws/aws-sdk-go-v2/aws" awscfg "github.com/aws/aws-sdk-go-v2/config" awscred "github.com/aws/aws-sdk-go-v2/credentials" - awsacm "github.com/aws/aws-sdk-go-v2/service/acm" + "github.com/aws/aws-sdk-go-v2/service/acm" "github.com/aws/smithy-go" "github.com/certimate-go/certimate/pkg/core" @@ -35,7 +35,7 @@ type CertmgrConfig struct { type Certmgr struct { config *CertmgrConfig logger *slog.Logger - sdkClient *awsacm.Client + sdkClient *acm.Client } var _ Provider = (*Certmgr)(nil) @@ -89,7 +89,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo default: } - listCertificatesReq := &awsacm.ListCertificatesInput{ + listCertificatesReq := &acm.ListCertificatesInput{ NextToken: listCertificatesNextToken, MaxItems: aws.Int32(1000), } @@ -113,14 +113,14 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo } // 对比证书内容 - getCertificateReq := &awsacm.GetCertificateInput{ + getCertificateReq := &acm.GetCertificateInput{ CertificateArn: certItem.CertificateArn, } getCertificateResp, err := c.sdkClient.GetCertificate(ctx, getCertificateReq) if err != nil { var sdkErr smithy.APIError if errors.As(err, &sdkErr) { - if sdkErrCode := sdkErr.ErrorCode(); sdkErrCode == "NoSuchEntity" { + if sdkErrCode := sdkErr.ErrorCode(); sdkErrCode == "InvalidArnException" || sdkErrCode == "ResourceNotFoundException" { continue } } @@ -151,7 +151,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo // 导入证书 // REF: https://docs.aws.amazon.com/acm/latest/APIReference/API_ImportCertificate.html - importCertificateReq := &awsacm.ImportCertificateInput{ + importCertificateReq := &acm.ImportCertificateInput{ Certificate: ([]byte)(serverCertPEM), CertificateChain: ([]byte)(issuerCertPEM), PrivateKey: ([]byte)(privkeyPEM), @@ -179,7 +179,7 @@ func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri // 导入证书 // REF: https://docs.aws.amazon.com/acm/latest/APIReference/API_ImportCertificate.html - importCertificateReq := &awsacm.ImportCertificateInput{ + importCertificateReq := &acm.ImportCertificateInput{ CertificateArn: aws.String(certIdOrName), Certificate: ([]byte)(serverCertPEM), CertificateChain: ([]byte)(issuerCertPEM), @@ -194,15 +194,15 @@ func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri return &ReplaceResult{}, nil } -func createSDKClient(accessKeyId, secretAccessKey, region string) (*awsacm.Client, error) { - cfg, err := awscfg.LoadDefaultConfig(context.Background()) +func createSDKClient(accessKeyId, secretAccessKey, region string) (*acm.Client, error) { + cfg, err := awscfg.LoadDefaultConfig(context.Background(), + awscfg.WithCredentialsProvider(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")), + awscfg.WithRegion(region), + ) if err != nil { return nil, err } - client := awsacm.NewFromConfig(cfg, func(o *awsacm.Options) { - o.Region = region - o.Credentials = aws.NewCredentialsCache(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")) - }) + client := acm.NewFromConfig(cfg) return client, nil } diff --git a/pkg/core/certmgr/providers/aws-iam/aws_iam.go b/pkg/core/certmgr/providers/aws-iam/aws_iam.go index 1c77e2944..08a88329c 100644 --- a/pkg/core/certmgr/providers/aws-iam/aws_iam.go +++ b/pkg/core/certmgr/providers/aws-iam/aws_iam.go @@ -11,7 +11,7 @@ import ( aws "github.com/aws/aws-sdk-go-v2/aws" awscfg "github.com/aws/aws-sdk-go-v2/config" awscred "github.com/aws/aws-sdk-go-v2/credentials" - awsiam "github.com/aws/aws-sdk-go-v2/service/iam" + "github.com/aws/aws-sdk-go-v2/service/iam" "github.com/aws/smithy-go" "github.com/samber/lo" @@ -40,7 +40,7 @@ type CertmgrConfig struct { type Certmgr struct { config *CertmgrConfig logger *slog.Logger - sdkClient *awsiam.Client + sdkClient *iam.Client } var _ Provider = (*Certmgr)(nil) @@ -94,7 +94,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo default: } - listServerCertificatesReq := &awsiam.ListServerCertificatesInput{ + listServerCertificatesReq := &iam.ListServerCertificatesInput{ PathPrefix: lo.EmptyableToPtr(c.config.CertificatePath), Marker: listServerCertificatesMarker, MaxItems: aws.Int32(1000), @@ -117,14 +117,14 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo } // 对比证书内容 - getServerCertificateReq := &awsiam.GetServerCertificateInput{ + getServerCertificateReq := &iam.GetServerCertificateInput{ ServerCertificateName: certItem.ServerCertificateName, } getServerCertificateResp, err := c.sdkClient.GetServerCertificate(ctx, getServerCertificateReq) if err != nil { var sdkErr smithy.APIError if errors.As(err, &sdkErr) { - if sdkErrCode := sdkErr.ErrorCode(); sdkErrCode == "InvalidArnException" || sdkErrCode == "ResourceNotFoundException" { + if sdkErrCode := sdkErr.ErrorCode(); sdkErrCode == "NoSuchEntity" { continue } } @@ -160,7 +160,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo // 导入证书 // REF: https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html - uploadServerCertificateReq := &awsiam.UploadServerCertificateInput{ + uploadServerCertificateReq := &iam.UploadServerCertificateInput{ ServerCertificateName: aws.String(certName), Path: aws.String(cmp.Or(c.config.CertificatePath, "/")), CertificateBody: aws.String(serverCertPEM), @@ -187,15 +187,15 @@ func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri return nil, core.ErrUnsupported } -func createSDKClient(accessKeyId, secretAccessKey, region string) (*awsiam.Client, error) { - cfg, err := awscfg.LoadDefaultConfig(context.Background()) +func createSDKClient(accessKeyId, secretAccessKey, region string) (*iam.Client, error) { + cfg, err := awscfg.LoadDefaultConfig(context.Background(), + awscfg.WithCredentialsProvider(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")), + awscfg.WithRegion(region), + ) if err != nil { return nil, err } - client := awsiam.NewFromConfig(cfg, func(o *awsiam.Options) { - o.Region = region - o.Credentials = aws.NewCredentialsCache(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")) - }) + client := iam.NewFromConfig(cfg) return client, nil } diff --git a/pkg/core/deployer/providers/aws-alb/aws_alb.go b/pkg/core/deployer/providers/aws-alb/aws_alb.go index 4d9e12961..e117c7084 100644 --- a/pkg/core/deployer/providers/aws-alb/aws_alb.go +++ b/pkg/core/deployer/providers/aws-alb/aws_alb.go @@ -221,14 +221,14 @@ func (d *Deployer) updateListenerSniCertificate(ctx context.Context, cloudListen } func createSDKClient(accessKeyId, secretAccessKey, region string) (*elasticloadbalancingv2.Client, error) { - cfg, err := awscfg.LoadDefaultConfig(context.Background()) + cfg, err := awscfg.LoadDefaultConfig(context.Background(), + awscfg.WithCredentialsProvider(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")), + awscfg.WithRegion(region), + ) if err != nil { return nil, err } - client := elasticloadbalancingv2.NewFromConfig(cfg, func(o *elasticloadbalancingv2.Options) { - o.Region = region - o.Credentials = aws.NewCredentialsCache(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")) - }) + client := elasticloadbalancingv2.NewFromConfig(cfg) return client, nil } diff --git a/pkg/core/deployer/providers/aws-amplify/aws_amplify.go b/pkg/core/deployer/providers/aws-amplify/aws_amplify.go index 612092a86..0e299792d 100644 --- a/pkg/core/deployer/providers/aws-amplify/aws_amplify.go +++ b/pkg/core/deployer/providers/aws-amplify/aws_amplify.go @@ -125,14 +125,14 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep } func createSDKClient(accessKeyId, secretAccessKey, region string) (*amplify.Client, error) { - cfg, err := awscfg.LoadDefaultConfig(context.Background()) + cfg, err := awscfg.LoadDefaultConfig(context.Background(), + awscfg.WithCredentialsProvider(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")), + awscfg.WithRegion(region), + ) if err != nil { return nil, err } - client := amplify.NewFromConfig(cfg, func(o *amplify.Options) { - o.Region = region - o.Credentials = aws.NewCredentialsCache(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")) - }) + client := amplify.NewFromConfig(cfg) return client, nil } diff --git a/pkg/core/deployer/providers/aws-apigateway/aws_apigateway.go b/pkg/core/deployer/providers/aws-apigateway/aws_apigateway.go index 7da2c3068..469715e71 100644 --- a/pkg/core/deployer/providers/aws-apigateway/aws_apigateway.go +++ b/pkg/core/deployer/providers/aws-apigateway/aws_apigateway.go @@ -120,14 +120,14 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep } func createSDKClient(accessKeyId, secretAccessKey, region string) (*apigatewayv2.Client, error) { - cfg, err := awscfg.LoadDefaultConfig(context.Background()) + cfg, err := awscfg.LoadDefaultConfig(context.Background(), + awscfg.WithCredentialsProvider(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")), + awscfg.WithRegion(region), + ) if err != nil { return nil, err } - client := apigatewayv2.NewFromConfig(cfg, func(o *apigatewayv2.Options) { - o.Region = region - o.Credentials = aws.NewCredentialsCache(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")) - }) + client := apigatewayv2.NewFromConfig(cfg) return client, nil } diff --git a/pkg/core/deployer/providers/aws-clb/aws_clb.go b/pkg/core/deployer/providers/aws-clb/aws_clb.go index ff348ec4b..e8643c2d5 100644 --- a/pkg/core/deployer/providers/aws-clb/aws_clb.go +++ b/pkg/core/deployer/providers/aws-clb/aws_clb.go @@ -133,14 +133,14 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep } func createSDKClient(accessKeyId, secretAccessKey, region string) (*elasticloadbalancing.Client, error) { - cfg, err := awscfg.LoadDefaultConfig(context.Background()) + cfg, err := awscfg.LoadDefaultConfig(context.Background(), + awscfg.WithCredentialsProvider(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")), + awscfg.WithRegion(region), + ) if err != nil { return nil, err } - client := elasticloadbalancing.NewFromConfig(cfg, func(o *elasticloadbalancing.Options) { - o.Region = region - o.Credentials = aws.NewCredentialsCache(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")) - }) + client := elasticloadbalancing.NewFromConfig(cfg) return client, nil } diff --git a/pkg/core/deployer/providers/aws-cloudfront/aws_cloudfront.go b/pkg/core/deployer/providers/aws-cloudfront/aws_cloudfront.go index 5de4fa7ba..60f454518 100644 --- a/pkg/core/deployer/providers/aws-cloudfront/aws_cloudfront.go +++ b/pkg/core/deployer/providers/aws-cloudfront/aws_cloudfront.go @@ -159,14 +159,14 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep } func createSDKClient(accessKeyId, secretAccessKey, region string) (*cloudfront.Client, error) { - cfg, err := awscfg.LoadDefaultConfig(context.Background()) + cfg, err := awscfg.LoadDefaultConfig(context.Background(), + awscfg.WithCredentialsProvider(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")), + awscfg.WithRegion(region), + ) if err != nil { return nil, err } - client := cloudfront.NewFromConfig(cfg, func(o *cloudfront.Options) { - o.Region = region - o.Credentials = aws.NewCredentialsCache(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")) - }) + client := cloudfront.NewFromConfig(cfg) return client, nil } diff --git a/pkg/core/deployer/providers/aws-nlb/aws_nlb.go b/pkg/core/deployer/providers/aws-nlb/aws_nlb.go index e46ee9f55..fcb67ae24 100644 --- a/pkg/core/deployer/providers/aws-nlb/aws_nlb.go +++ b/pkg/core/deployer/providers/aws-nlb/aws_nlb.go @@ -221,14 +221,14 @@ func (d *Deployer) updateListenerSniCertificate(ctx context.Context, cloudListen } func createSDKClient(accessKeyId, secretAccessKey, region string) (*elasticloadbalancingv2.Client, error) { - cfg, err := awscfg.LoadDefaultConfig(context.Background()) + cfg, err := awscfg.LoadDefaultConfig(context.Background(), + awscfg.WithCredentialsProvider(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")), + awscfg.WithRegion(region), + ) if err != nil { return nil, err } - client := elasticloadbalancingv2.NewFromConfig(cfg, func(o *elasticloadbalancingv2.Options) { - o.Region = region - o.Credentials = aws.NewCredentialsCache(awscred.NewStaticCredentialsProvider(accessKeyId, secretAccessKey, "")) - }) + client := elasticloadbalancingv2.NewFromConfig(cfg) return client, nil }