validate region

This commit is contained in:
Seth Pollack 2017-02-23 11:55:52 -05:00
parent e09037dff0
commit b1702d749e
No known key found for this signature in database
GPG Key ID: 0BD21A8B536BBEBC
1 changed files with 22 additions and 3 deletions

View File

@ -18,14 +18,16 @@ package vfs
import (
"fmt"
"os"
"sync"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/endpoints"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ec2"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/golang/glog"
"os"
"sync"
"time"
)
type S3Context struct {
@ -76,6 +78,10 @@ func (s *S3Context) getRegionForBucket(bucket string) (string, error) {
awsRegion = "us-east-1"
}
if err := validateRegion(awsRegion); err != nil {
return "", err
}
request := &s3.GetBucketLocationInput{
Bucket: &bucket,
}
@ -155,3 +161,16 @@ func bruteforceBucketLocation(region *string, request *s3.GetBucketLocationInput
return nil, fmt.Errorf("Could not retrieve location for AWS bucket %s", *request.Bucket)
}
}
func validateRegion(region string) error {
resolver := endpoints.DefaultResolver()
partitions := resolver.(endpoints.EnumPartitions).Partitions()
for _, p := range partitions {
for _, r := range p.Regions() {
if r.ID() == region {
return nil
}
}
}
return fmt.Errorf("%s is not a valid region\nPlease check that your region is formatted correctly (i.e. us-east-1)", region)
}