diff --git a/changelogs/unreleased/210-kaovilai b/changelogs/unreleased/210-kaovilai new file mode 100644 index 0000000..84ab149 --- /dev/null +++ b/changelogs/unreleased/210-kaovilai @@ -0,0 +1 @@ +Fix region discovery after aws-sdk-go-v2 \ No newline at end of file diff --git a/velero-plugin-for-aws/object_store.go b/velero-plugin-for-aws/object_store.go index a99a906..fefa6c1 100644 --- a/velero-plugin-for-aws/object_store.go +++ b/velero-plugin-for-aws/object_store.go @@ -139,18 +139,24 @@ func (o *ObjectStore) Init(config map[string]string) error { } } + cfg, err := newConfigBuilder(o.log).WithRegion(region). + WithProfile(credentialProfile). + WithCredentialsFile(credentialsFile). + WithTLSSettings(insecureSkipTLSVerify, caCert).Build() + if err != nil { + return errors.WithStack(err) + } + // AWS (not an alternate S3-compatible API) and region not // explicitly specified: determine the bucket's region + // GetBucketRegion will attempt to get the region for a bucket using the + // client's configured region to determine which AWS partition to perform the query on. if s3URL == "" && region == "" { - cfg, err := newConfigBuilder(o.log).WithTLSSettings(insecureSkipTLSVerify, caCert).Build() + regionClient, err := newS3Client(cfg, s3URL, s3ForcePathStyle) if err != nil { return errors.WithStack(err) } - client, err := newS3Client(cfg, s3URL, s3ForcePathStyle) - if err != nil { - return errors.WithStack(err) - } - region, err = manager.GetBucketRegion(context.Background(), client, bucket) + region, err = manager.GetBucketRegion(context.Background(), regionClient, bucket, func(o *s3.Options) { o.Region = "us-east-1" }) if err != nil { o.log.Errorf("Failed to determine bucket's region bucket: %s, error: %v", bucket, err) return err @@ -158,14 +164,7 @@ func (o *ObjectStore) Init(config map[string]string) error { if region == "" { return fmt.Errorf("unable to determine bucket's region, bucket: %s", bucket) } - } - - cfg, err := newConfigBuilder(o.log).WithRegion(region). - WithProfile(credentialProfile). - WithCredentialsFile(credentialsFile). - WithTLSSettings(insecureSkipTLSVerify, caCert).Build() - if err != nil { - return errors.WithStack(err) + cfg.Region = region } client, err := newS3Client(cfg, s3URL, s3ForcePathStyle)