すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:静的Webサイトホスティング (ミラーリングベースのback-to-origin)

最終更新日:Feb 23, 2024

バケットの静的Webサイトホスティングを有効にし、ミラーリングベースのback-to-originルールを設定できます。 バケットで静的Webサイトをホストした後、バケットにアクセスしてWebサイトにアクセスできます。 指定したインデックスページまたはエラーページに自動的にリダイレクトされます。 ミラーリングベースのback-to-originルールを設定して有効にすると、ミラーリングベースのback-to-originを使用して、データをObject Storage Service (OSS) にシームレスに移行できます。

使用上の注意

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。

  • このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。

  • 静的Webサイトホスティングまたはミラーリングベースのback-To-originを構成するには、oss:PutBucketWebsite権限が必要です。 静的Webサイトホスティング構成またはミラーリングベースのback-To-originルールを照会するには、oss:GetBucketWebsite権限が必要です。 静的Webサイトホスティング設定またはミラーリングベースのback-To-originルールを削除するには、oss:DeleteBucketWebsite権限が必要です。 詳細については、「RAMポリシーの一般的な例」をご参照ください。

静的 Web サイトホスティング

静的webサイトは、クライアントで実行できるJavaScriptコードなどのスクリプトを含む、すべてのwebページが静的コンテンツのみで構成されるwebサイトです。 静的Webサイトホスティング機能を使用して、静的WebサイトをOSSバケットでホストし、バケットのドメイン名を使用してWebサイトにアクセスできます。

  • 静的 Web サイトホスティングの設定

    次のサンプルコードは、静的Webサイトホスティングを構成する方法の例を示しています。

    パッケージメイン
    
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    
    func main() {
        // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
        provider, err := oss.NewEnvironmentVariableCredentialsProvider()
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // Create an OSSClient instance. 
        // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
        client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
        // バケットの名前を指定します。 例: examplebucket. 
        bucketName := "examplebucket"
    
        // 静的Webサイトのデフォルトのホームページをindex.htmlに設定し、デフォルトの404ページをerror.htmlに設定します。 
        err = client.SetBucketWebsite(bucketName, "index.html", "error.html")
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    }            
  • 静的Webサイトホスティング設定の照会

    次のサンプルコードは、静的Webサイトホスティング設定をクエリする方法の例を示しています。

    パッケージメイン
    
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    
    func main() {
        // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
        provider, err := oss.NewEnvironmentVariableCredentialsProvider()
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // Create an OSSClient instance. 
        // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
        client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // バケットの名前を指定します。 例: examplebucket. 
        bucketName := "examplebucket"
    
        // 静的Webサイトホスティング設定を照会します。 
        wsRes, err := client.GetBucketWebsite(bucketName)
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
        fmt.Println("indexWebsite: ", wsRes.IndexDocument.Suffix)
        fmt.Println("errorWebsite: ", wsRes.ErrorDocument.Key)
    } 
  • 静的 Web サイトホスティング設定の削除

    次のサンプルコードは、静的Webサイトホスティング設定を削除する方法の例を示しています。

    パッケージメイン
    
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    
    func main() {
        // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
        provider, err := oss.NewEnvironmentVariableCredentialsProvider()
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // Create an OSSClient instance. 
        // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
        client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // バケットの名前を指定します。 例: examplebucket. 
        bucketName := "examplebucket"
    
        // Delete static website hosting configurations. 
        err = client.DeleteBucketWebsite(bucketName)
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    }            

ミラーリングベースのback-to-origin

ミラーリングベースのback-to-originを使用すると、データをOSSにシームレスに移行できます。 たとえば、サービスを中断することなく、自己管理オリジンまたは別のクラウドサービスからOSSにサービスを移行できます。 移行中にミラーリングベースのback-to-originルールを使用して、OSSに移行されていないデータを取得できます。 これにより、ビジネスの継続性が確保されます。

  • ミラーリングベースのback-to-originルールの設定

    リクエスタが指定されたバケット内のオブジェクトにアクセスしようとしても、そのオブジェクトが存在しない場合は、オリジンおよびback-to-origin条件でオブジェクトのURLを指定して、リクエスタがオリジンからオブジェクトを取得できるようにすることができます。 たとえば、examplebucketという名前のバケットは、中国 (杭州) リージョンにあります。 リクエスタがバケットのルートディレクトリのexamplefolderディレクトリ内のオブジェクトにアクセスしようとしても、そのオブジェクトが存在しない場合、リクエスタは、オリジンのexamplefolderディレクトリに格納されているオブジェクトにアクセスするwww.example.comにリダイレクトされます。

    次のサンプルコードは、前述のシナリオのミラーリングベースのback-to-originルールを設定する方法の例を示しています。

    パッケージメイン
    
    import (import (import)
    "fmt"
    「github.com/aliyun/aliyun-oss-go-sdk/oss」
    "os"
    )
    
    func main() {
    // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err! =nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }
    
    // OSSClientインスタンスを作成します。 
    	// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
    	client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
    if err! =nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }
    
    // バケットの名前を指定します。 例: examplebucket. 
    	bucketName := "examplebucket"
    
    var indexWebsite = "myindex.html"
    var errorWebsite = "myerror.html"
    
    btrue := true
    bfalse := false
    // back-to-originタイプをミラーリングベースのback-to-originに設定します。 
    	ruleOk := oss.RoutingRule {
    RuleNumber: 1、条件: oss.Condition {
    KeyPrefixEquals: "" 、// back-to-origin条件をHTTPステータスコード404に設定します。 
    			HTTPErrorCodeReturnedEquals: 404、},
    リダイレクト: oss.Redirect {
    RedirectType: "ミラー" 、// PassQueryString: &btrue、// ミラーリングベースのback-to-originルールのback-to-origin URLを指定します。 
    			MirrorURL: "http://www.test.com/" 、// MirrorPassQueryString:&btrue、// MirrorFollowRedirect:&bfalse、// MirrorCheckMd5:&bfalse、MirrorHeaders: oss.MirrorHeaders {
    // PassAll:&bfalse、// 特定のHTTPヘッダーを送信します。 
    				パス: []string{"myheader-key1", "myheader-key2"},
    // 特定のHTTPヘッダーの送信を禁止します。 
    				削除: []string{"myheader-key3", "myheader-key4"},
    セット: []oss.MirrorHeaderSet {
    {
    キー: "myheader-key5" 、値: "myheader-value5" 、},
    },
    },
    },
    }
    
    // back-to-originタイプをリダイレクトベースのback-to-originに設定します。 
    	ruleArrOk := []oss.RoutingRule {
    {
    RuleNumber: 2、条件: oss.Condition {
    // back-to-origin条件をHTTPステータスコード404に設定し、オブジェクト名のプレフィックスをabc /に設定します。 
    				KeyPrefixEquals: "abc/" 、HTTPErrorCodeReturnedEquals: 404、IncludeHeader: []oss.IncludeHeader {
    {
    キー: 「ホスト」、等しい: "test.oss-cn-beijing-internal.aliyuncs.com" 、},
    },
    },
    リダイレクト: oss.Redirect {
    RedirectType: "AliCDN" 、プロトコル: "http" 、ホスト名: "www.test.com" 、PassQueryString: &bfalse、ReplaceKeyWith: "prefix/${key}.suffix" 、HttpRedirectCode: 301、},
    },
    // back-to-originタイプをミラーリングベースのback-to-originに設定します。 
    		{
    RuleNumber: 3、条件: oss.Condition {
    KeyPrefixEquals: "" 、HTTPErrorCodeReturnedEquals: 404、},
    リダイレクト: oss.Redirect {
    RedirectType: "ミラー" 、PassQueryString: &btrue、MirrorURL: "http://www.test.com/" 、MirrorPassQueryString: &btrue、MirrorFollowRedirect: &bfalse、MirrorCheckMd5: &bfalse、MirrorHeaders: oss.MirrorHeaders {
    PassAll: &btrue、パス: []string{"myheader-key1", "myheader-key2"},
    削除: []string{"myheader-key3", "myheader-key4"},
    セット: []oss.MirrorHeaderSet {
    {
    キー: "myheader-key5" 、値: "myheader-value5" 、},
    },
    },
    },
    },
    }
    
    wxmlOne := oss.WebsiteXML {
    IndexDocument: oss.IndexDocument {
    接尾辞: indexWebsite、},
    ErrorDocument: oss.ErrorDocument {
    キー: 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)
    }
    }
    
         
  • ミラーリングベースのback-to-origin設定のクエリ

    次のサンプルコードでは、ミラーリングベースのback-to-origin設定を照会する方法の例を示します。

    パッケージメイン
    
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    
    func main() {
        // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
        provider, err := oss.NewEnvironmentVariableCredentialsProvider()
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // Create an OSSClient instance. 
        // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
        client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // バケットの名前を指定します。 例: examplebucket. 
        bucketName := "examplebucket"
        // ミラーリングベースのback-to-origin設定を照会します。 
        data,err := client.GetBucketWebsiteXml(bucketName)
        if err! =nil {
          fmt.Println("Error:", err)
          os.Exit(-1)
        }
        fmt.Println (データ)
    } 
  • ミラーリングベースのback-to-origin設定の削除

    次のサンプルコードは、ミラーリングベースのback-to-origin設定を削除する方法の例を示しています。

    パッケージメイン
    
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    
    func main() {
        // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
        provider, err := oss.NewEnvironmentVariableCredentialsProvider()
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // Create an OSSClient instance. 
        // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
        client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // バケットの名前を指定します。 例: examplebucket. 
        bucketName := "examplebucket"
    
        // ミラーリングベースのback-to-origin設定を削除します。 
        err = client.DeleteBucketWebsite(bucketName)
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    }            

参考資料

  • 静的Webサイトホスティングとミラーリングベースのback-to-originを管理するために使用される完全なサンプルコードについては、GitHubをご覧ください。

  • 静的Webサイトホスティングまたはミラーリングベースのback-to-originを構成するために呼び出すことができるAPI操作の詳細については、「PutBucketWebsite」をご参照ください。

  • 静的Webサイトホスティング構成またはミラーリングベースのback-to-originルールを照会するために呼び出すことができるAPI操作の詳細については、「GetBucketWebsite」をご参照ください。

  • 静的Webサイトホスティング設定またはミラーリングベースのback-to-originルールを削除するために呼び出すことができるAPI操作の詳細については、「DeleteBucketWebsite」をご参照ください。