package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
bucketName := "examplebucket"
var indexWebsite = "myindex.html"
var errorWebsite = "myerror.html"
btrue := true
bfalse := false
ruleOk := oss.RoutingRule{
RuleNumber: 1,
Condition: oss.Condition{
KeyPrefixEquals: "",
HTTPErrorCodeReturnedEquals: 404,
},
Redirect: oss.Redirect{
RedirectType: "Mirror",
MirrorURL: "http://www.test.com/",
MirrorHeaders: oss.MirrorHeaders{
Pass: []string{"myheader-key1", "myheader-key2"},
Remove: []string{"myheader-key3", "myheader-key4"},
Set: []oss.MirrorHeaderSet{
{
Key: "myheader-key5",
Value: "myheader-value5",
},
},
},
},
}
ruleArrOk := []oss.RoutingRule{
{
RuleNumber: 2,
Condition: oss.Condition{
KeyPrefixEquals: "abc/",
HTTPErrorCodeReturnedEquals: 404,
IncludeHeader: []oss.IncludeHeader{
{
Key: "host",
Equals: "test.oss-cn-beijing-internal.aliyuncs.com",
},
},
},
Redirect: oss.Redirect{
RedirectType: "AliCDN",
Protocol: "http",
HostName: "www.test.com",
PassQueryString: &bfalse,
ReplaceKeyWith: "prefix/${key}.suffix",
HttpRedirectCode: 301,
},
},
{
RuleNumber: 3,
Condition: oss.Condition{
KeyPrefixEquals: "",
HTTPErrorCodeReturnedEquals: 404,
},
Redirect: oss.Redirect{
RedirectType: "Mirror",
PassQueryString: &btrue,
MirrorURL: "http://www.test.com/",
MirrorPassQueryString: &btrue,
MirrorFollowRedirect: &bfalse,
MirrorCheckMd5: &bfalse,
MirrorHeaders: oss.MirrorHeaders{
PassAll: &btrue,
Pass: []string{"myheader-key1", "myheader-key2"},
Remove: []string{"myheader-key3", "myheader-key4"},
Set: []oss.MirrorHeaderSet{
{
Key: "myheader-key5",
Value: "myheader-value5",
},
},
},
},
},
}
wxmlOne := oss.WebsiteXML{
IndexDocument: oss.IndexDocument{
Suffix: indexWebsite,
},
ErrorDocument: oss.ErrorDocument{
Key: errorWebsite,
},
}
wxmlOne.RoutingRules = append(wxmlOne.RoutingRules, ruleOk)
wxmlOne.RoutingRules = append(wxmlOne.RoutingRules, ruleArrOk...)
err = client.SetBucketWebsiteDetail(bucketName, wxmlOne)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}