バケットの静的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 サイトホスティングの設定
次のコードは、静的Webサイトホスティングを構成する方法の例を示しています。
#-*-コーディング: utf-8-*- oss2のインポート oss2.modelsからBucketWebsiteをインポート oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 # バケットの名前を指定します。 例: examplebucket. bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket') # 静的Webサイトホスティングを有効にし、デフォルトのホームページをindex.htmlに設定してから、デフォルトの404ページをerror.htmlに設定します。 bucket.put_bucket_website (BucketWebsite('index.html ', 'error.html'))
静的Webサイトホスティング設定の照会
次のコードは、静的Webサイトホスティング設定を照会する方法の例を示しています。
#-*-コーディング: utf-8-*- oss2のインポート oss2.modelsからBucketWebsiteをインポート oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 # バケットの名前を指定します。 例: examplebucket. bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket') トライ: # バケットに対して静的Webサイトホスティングが有効になっていない場合、get_bucket_websiteを呼び出すとNoSuchWebsite例外がスローされます。 website = bucket.get_bucket_website() print('Index file is {0}, エラーファイルis {1}'.format(website.index_file, website.error_file)) oss2.exceptions.NoSuchWebsiteをeとして除く: print('Website is not configured, request_id={0}'.format(e.request_id))
静的 Web サイトホスティング設定の削除
次のコードは、静的Webサイトホスティング設定を削除する方法の例を示しています。
#-*-コーディング: utf-8-*- oss2のインポート oss2.modelsからBucketWebsiteをインポート oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 # バケットの名前を指定します。 例: examplebucket. bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket') # 静的Webサイトホスティング設定を削除します。 bucket.de lete_bucket_website()
ミラーリングベースのback-to-origin
ミラーリングベースのback-to-originを使用すると、データをOSSにシームレスに移行できます。 たとえば、サービスを中断することなく、自己管理オリジンまたは別のクラウドサービスからOSSにサービスを移行できます。 移行中にミラーリングベースのback-to-originルールを使用して、OSSに移行されていないデータを取得できます。 これにより、ビジネスの継続性が確保されます。
ミラーリングベースのback-to-originルールの設定
要求者が特定のバケット内のオブジェクトにアクセスしようとしても、そのオブジェクトが存在しない場合は、オリジンおよびback-to-origin条件でオブジェクトのURLを指定して、要求者がオリジンからオブジェクトを取得できるようにすることができます。 たとえば、examplebucketという名前のバケットは、中国 (杭州) リージョンにあります。 リクエスタがバケットのルートディレクトリのexamplefolderディレクトリにあるオブジェクトにアクセスしようとしたが、そのオブジェクトが存在しない場合、リクエスタはそのオリジンにリダイレクトされ、https://www.example.com/ オリジンのexamplefolderディレクトリに格納されている必要なオブジェクトにアクセスします。
次のコードでは、上記のシナリオでミラーリングベースのback-to-originルールを設定する方法の例を示します。
#-*-コーディング: utf-8-*- oss2のインポート oss2.modelsからBucketWebsite、MirrorHeadersSet、RedirectMirrorHeaders、リダイレクト、RoutingRule、\をインポートします。 REDIRECT_TYPE_MIRROR、条件 oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 # バケットの名前を指定します。 例: examplebucket. bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket') # 静的Webサイトホスティングを有効にし、デフォルトのホームページをindex.htmlに設定してから、デフォルトの404ページをerror.htmlに設定します。 index_file = 'index.html' error_file = 'error.html' # 一致条件を指定します。 condition1=条件 (key_prefix_equals='examplefolder' 、 http_err_code_return_equals=404) # ミラーリングベースのback-to-originを使用する場合に、リクエストに含めるヘッダーを指定します。 mirror_headers_set_1 = MirrorHeadersSet("myheader-key5" 、"myheader-value5") mirror_headers_set_2 = MirrorHeadersSet("myheader-key6" 、"myheader-value6") set_list = [mirror_headers_set_1, mirror_headers_set_2] pass_list = ['myheader-key1', 'myheader-key2'] remove_list = ['myheader-key3', 'myheader-key4'] mirror_header = RedirectMirrorHeaders(pass_all=True、pass_list=pass_list、remove_list=remove_list、set_list=set_list) # ルールが一致した後に実行する操作を指定します。 redirect1 = Redirect(redirect_type=REDIRECT_TYPE_MIRROR, mirror_url='https:// www.example.com/'', mirror_pass_query_string=True、mirror_follow_redirect=True、mirror_check_md5=True、mirror_headers=mirror_header) rule1 = RoutingRule(rule_num=1, condition1, redirect=redirect1) website_set = BucketWebsite(index_file, error_file, [rule1]) # ミラーリングベースのback-to-originを設定します。 bucket.put_bucket_website(website_set)
ミラーリングベースのback-to-origin設定の照会
次のコードは、バケットのミラーリングベースのback-to-origin設定を照会する方法の例を示しています。
#-*-コーディング: utf-8-*- oss2のインポート oss2.modelsからBucketWebsite、MirrorHeadersSet、RedirectMirrorHeaders、リダイレクト、RoutingRule、\をインポートします。 REDIRECT_TYPE_MIRROR、条件 oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 # バケットの名前を指定します。 例: examplebucket. bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket') トライ: # バケットに対して静的Webサイトホスティングが有効になっていない場合、get_bucket_websiteを呼び出すとNoSuchWebsite例外がスローされます。 website_get = bucket.get_bucket_website() # デフォルトのホームページを照会します。 プリント (website_get.index_file) # デフォルトの404ページを照会します。 プリント (website_get.error_file) website_get.rulesのルールの場合: プリント (rule.ru le_num) # ルールマッチングに使用されるプレフィックスを照会します。 print(rule.condition.key_prefix_equals) # HTTPステータスコードを照会します。 print(rule.condition.http_err_code_return_equals) # リダイレクションタイプを照会します。 print(rule.redirect.redirect_type) # ミラーリングベースのback-to-originのオリジンURLを照会します。 print(rule.redirect.mirror_url) # リクエスト内のパラメーターを照会します。 print(rule.redirect.pass_query_string) # リクエストがリダイレクトされたときにオブジェクト名を置き換えるために使用される文字列を指定します。 このパラメーターの値は変数にすることができます。 # print(rule.redirect.replace_key_with) # リクエストがリダイレクトされたときにオブジェクト名のプレフィックスを置き換えるために使用される文字列を指定します。 オブジェクト名のプレフィックスが空の場合、文字列はオブジェクト名の前にあります。 # print(rule.redirect.replace_key_prefix_with) # リダイレクトに使用されるプロトコルを照会します。 # print(rule.redirect.proto) # リクエストのリダイレクト先のドメイン名を照会します。 # print(rule.redirect.host_name) # レスポンスのHTTPステータスコードを照会します。 # print(rule.redirect.http_redirect_code) oss2.exceptions.NoSuchWebsiteをeとして除く: print('Website is not configured, request_id={0}'.format(e.request_id))
ミラーリングベースのback-to-origin設定の削除
次のコードは、バケットのミラーリングベースのback-to-origin設定を削除する方法の例を示しています。
#-*-コーディング: utf-8-*- oss2のインポート oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 # バケットの名前を指定します。 例: examplebucket. bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket') # ミラーリングベースのback-to-origin設定を削除します。 bucket.de lete_bucket_website()
参考資料
静的Webサイトホスティングまたはミラーリングベースのback-to-originを構成するために呼び出すことができるAPI操作の詳細については、「PutBucketWebsite」をご参照ください。
静的Webサイトホスティングまたはミラーリングベースのback-to-origin構成を照会するために呼び出すことができるAPI操作の詳細については、「GetBucketWebsite」をご参照ください。
静的Webサイトホスティングまたはミラーリングベースのback-to-origin設定を削除するために呼び出すことができるAPI操作の詳細については、「DeleteBucketWebsite」をご参照ください。