Documentation
¶
Overview ¶
Package s3 signs HTTP requests for Amazon S3 and compatible services.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var DefaultService = &Service{Domain: "amazonaws.com"}
DefaultService is the default Service used by Sign.
Functions ¶
func AmazonBucket ¶
AmazonBucket returns everything up to the last '.' in subdomain. It is designed to be used with the Amazon service.
"johnsmith.s3" becomes "johnsmith" "johnsmith.s3-eu-west-1" becomes "johnsmith" "www.example.com.s3" becomes "www.example.com"
func IdentityBucket ¶
IdentityBucket returns subdomain. It is designed to be used with S3-compatible services that treat the entire subdomain as the bucket name, for example storage.io.
func Sign ¶
Sign signs an HTTP request with the given S3 keys.
This function is a wrapper around DefaultService.Sign.
Example ¶
package main
import (
"fmt"
"github.com/AlekSi/s3"
"log"
"net/http"
"os"
"strings"
"time"
)
func main() {
keys := s3.Keys{
AccessKey: os.Getenv("S3_ACCESS_KEY"),
SecretKey: os.Getenv("S3_SECRET_KEY"),
}
data := strings.NewReader("hello, world")
r, _ := http.NewRequest("PUT", "https://example.s3.amazonaws.com/foo", data)
r.ContentLength = int64(data.Len())
r.Header.Set("Date", time.Now().UTC().Format(http.TimeFormat))
r.Header.Set("X-Amz-Acl", "public-read")
s3.Sign(r, keys)
resp, err := http.DefaultClient.Do(r)
if err != nil {
log.Fatal(err)
}
fmt.Println(resp.StatusCode)
}
Types ¶
type Keys ¶
type Keys struct {
AccessKey string
SecretKey string
// SecurityToken is used for temporary security credentials.
// If set, it will be added to header field X-Amz-Security-Token
// before signing a request.
SecurityToken string
}
Keys holds a set of Amazon Security Credentials.
type Service ¶
type Service struct {
// Domain is the service's root domain. It is used to extract
// the subdomain from an http.Request before passing the
// subdomain to Bucket.
Domain string
// Bucket derives the bucket name from a subdomain.
// If nil, AmazonBucket is used.
Bucket func(subdomain string) string
}
Service represents an S3-compatible service.
Click to show internal directories.
Click to hide internal directories.