func openS3Datastore(params config.S3Datastore) (repo.Datastore, error) { // TODO support credentials files auth, err := aws.EnvAuth() if err != nil { return nil, err } region := aws.GetRegion(params.Region) if region.Name == "" { return nil, fmt.Errorf("unknown AWS region: %q", params.Region) } if params.Bucket == "" { return nil, fmt.Errorf("invalid S3 bucket: %q", params.Bucket) } client := s3.New(auth, region) // There are too many gophermucking s3datastores in my // gophermucking source. return &s3datastore.S3Datastore{ Client: client, Bucket: params.Bucket, ACL: s3.ACL(params.ACL), }, nil }
func ExampleV4Signer() { // Get auth from env vars auth, err := aws.EnvAuth() if err != nil { fmt.Println(err) } // Create a signer with the auth, name of the service, and aws region signer := aws.NewV4Signer(auth, "dynamodb", aws.USEast) // Create a request req, err := http.NewRequest("POST", aws.USEast.DynamoDBEndpoint, strings.NewReader("sample_request")) if err != nil { fmt.Println(err) } // Date or x-amz-date header is required to sign a request req.Header.Add("Date", time.Now().UTC().Format(http.TimeFormat)) // Sign the request signer.Sign(req) // Issue signed request http.DefaultClient.Do(req) }
func (s *AmazonServer) SetUp(c *check.C) { auth, err := aws.EnvAuth() if err != nil { c.Fatal(err.Error()) } s.auth = auth }
func (s *S) TestEnvAuthAlt(c *check.C) { os.Clearenv() os.Setenv("AWS_SECRET_KEY", "secret") os.Setenv("AWS_ACCESS_KEY", "access") auth, err := aws.EnvAuth() c.Assert(err, check.IsNil) c.Assert(auth, check.Equals, aws.Auth{SecretKey: "secret", AccessKey: "access"}) }
func (s *S) TestEnvAuthNoAccess(c *check.C) { os.Clearenv() os.Setenv("AWS_SECRET_ACCESS_KEY", "foo") _, err := aws.EnvAuth() c.Assert(err, check.ErrorMatches, "AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY not found in environment") }
func (s *S) TestEnvAuthNoSecret(c *check.C) { os.Clearenv() _, err := aws.EnvAuth() c.Assert(err, check.ErrorMatches, "AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY not found in environment") }