func (s *S) TestSharedAuthNoCredentialsFile(c *C) { os.Clearenv() os.Setenv("AWS_PROFILE", "foo") os.Setenv("HOME", "/tmp") _, err := aws.SharedAuth() c.Assert(err, ErrorMatches, "Couldn't parse AWS credentials file") }
func main() { var root = flag.String("root", "", "The directory to sync") var bucket = flag.String("bucket", "", "The S3 bucket to sync <root> to") var prefix = flag.String("prefix", "", "A prefix inside your S3 bucket where things go") var debug = flag.Bool("debug", false, "Don't actually try to sync anything and spew a lot of line noise") var credentials = flag.String("credentials", "", "Your S3 credentials file") flag.Parse() if *root == "" { panic("missing root to sync") } _, err := os.Stat(*root) if os.IsNotExist(err) { panic("root does not exist") } if *bucket == "" { panic("missing bucket") } if *credentials != "" { os.Setenv("AWS_CREDENTIAL_FILE", *credentials) } auth, err := aws.SharedAuth() if err != nil { panic(err) } // sudo figure out how to put all of the log // channel stuff into the Sync object itself // (20150930/thisisaaronland) log := make(chan string) cb := func(cs chan string) { s := <-cs fmt.Println(s) } go cb(log) s := s3.WOFSync(auth, *bucket, *prefix, log) err = s.SyncDirectory(*root, *debug) close(log) }
func NewS3Connection(bucket string, region string, public bool) *S3 { var acl s3.ACL var auth aws.Auth var err error // set auth auth, err = aws.EnvAuth() if err != nil { auth, err = aws.SharedAuth() if err != nil { log.Fatal(err) } } // set region if region == "" { region = os.Getenv("AWS_REGION") if region == "" { region = "us-east-1" } } awsRegion := aws.Regions[region] acl = s3.ACL("private") if public { acl = s3.ACL("public-read") } // establish connection conn := s3.New(auth, awsRegion) // set bucket bkt := conn.Bucket(bucket) return &S3{ Auth: auth, Region: awsRegion, bucket: bkt, conn: conn, ACL: acl, } }
func (s *S) TestSharedAuthDefaultCredentials(c *C) { os.Clearenv() d, err := ioutil.TempDir("", "") if err != nil { panic(err) } defer os.RemoveAll(d) err = os.Mkdir(d+"/.aws", 0755) if err != nil { panic(err) } ioutil.WriteFile(d+"/.aws/credentials", []byte("[default]\naws_access_key_id = access\naws_secret_access_key = secret\n"), 0644) os.Setenv("HOME", d) auth, err := aws.SharedAuth() c.Assert(err, IsNil) c.Assert(*auth, Equals, *aws.NewAuth("access", "secret", "", time.Time{})) }
func (s *S) TestSharedAuthNoKeysInProfile(c *C) { os.Clearenv() os.Setenv("AWS_PROFILE", "bar") d, err := ioutil.TempDir("", "") if err != nil { panic(err) } defer os.RemoveAll(d) err = os.Mkdir(d+"/.aws", 0755) if err != nil { panic(err) } ioutil.WriteFile(d+"/.aws/credentials", []byte("[bar]\nawsaccesskeyid = AK.."), 0644) os.Setenv("HOME", d) _, err = aws.SharedAuth() c.Assert(err, ErrorMatches, "AWS_SECRET_ACCESS_KEY not found in credentials file") }
func (s *S) TestSharedAuthNoProfileInFile(c *C) { os.Clearenv() os.Setenv("AWS_PROFILE", "foo") d, err := ioutil.TempDir("", "") if err != nil { panic(err) } defer os.RemoveAll(d) err = os.Mkdir(d+"/.aws", 0755) if err != nil { panic(err) } ioutil.WriteFile(d+"/.aws/credentials", []byte("[bar]\n"), 0644) os.Setenv("HOME", d) _, err = aws.SharedAuth() c.Assert(err, ErrorMatches, "Couldn't find profile in AWS credentials file") }
func (s *S) TestSharedAuth(c *C) { os.Clearenv() os.Setenv("AWS_PROFILE", "bar") d, err := ioutil.TempDir("", "") if err != nil { panic(err) } defer os.RemoveAll(d) err = os.Mkdir(d+"/.aws", 0755) if err != nil { panic(err) } ioutil.WriteFile(d+"/.aws/credentials", []byte("[bar]\naws_access_key_id = access\naws_secret_access_key = secret\n"), 0644) os.Setenv("HOME", d) auth, err := aws.SharedAuth() c.Assert(err, IsNil) c.Assert(auth, Equals, aws.Auth{SecretKey: "secret", AccessKey: "access"}) }
func (s *S) TestSharedAuthNoHome(c *C) { os.Clearenv() os.Setenv("AWS_PROFILE", "foo") _, err := aws.SharedAuth() c.Assert(err, ErrorMatches, "Could not get HOME") }