1 はじめに
ICOS(IBM Cloud Object Storage)に静的Webサイトを公開する機能が提供されたので試してみました。
2 従来の方法では何が不味かったのか?
ICOSでは従来でも、
https://xxx.xxx.xxx/index.html
のようにアクセスをすれば、そのファイルにアクセスすることはできました。でも、
https://xxx.xxx.xxx/
のようにindex.htmlを省略してアクセスすると、以下のようにBucket内部のリストが表示されてしまいます。
また、例えば存在しないファイルにアクセス(404 Not Found)するとやはり、このような無愛想(?)なページが返ってきます。ちょっとこれではWebサイトとしては使いづらいですよね。
ICOSでは、静的Webサイトを公開するStatic Web Hosting機能はこのような問題を解決してくれます。これで、3つのAZに自動的に展開される堅牢なWebサーバーがお手軽かつ安価かつ(ほとんど)運用要らずで利用可能になります。
3. 設定方法
Documentはこちら。
3.1 Public Accessを有効にする(オプションだけどほぼ必須)
認証なしにアクセスさせるために必要です。たとえば、こちらの手順を参照してください。
3.2 ICOS Firewallを設定する(オプション)
無制限に世界中にアクセスするのであれば不要ですが、アクセス元を制限するのであれば必要です。たとえば、こちらの手順を参照してください。
3.3 公開したいWebコンテンツをアップロード
Buckets -> Configurationから、あらかじめ作成済みの公開したいWebコンテンツをアップロードします。
必須なのはトップ画面にあたるindex.html
だけですが、エラー画面(error.html
)やファビコンやその他それらのページが利用するjavascriptやスタイルシートや画像などが用意されていると望ましいでしょう。
3.4 Static website hostingの構成
- Buckets -> Configuration -> Static website hostingから構成します。
- Index document(この例ではindex.html)は必須だが、Error document(この例ではerror.html)はオプション。
-
Set routing rules
を構成することで、例えばエラーコードごとに細かな挙動を変えることができるが、今回は利用しない。
4. テスト
ICOSの静的Webサイトへのエンドポイント情報は、設定画面の直下にあります。(ICOS Objectに直接アクセスする際のFQDNとは違うことに注意!)
4.1 https://xxxxxx.s3-web.jp-tok.cloud-object-storage.appdomain.cloud/index.html
にアクセス
トップページが表示されて期待通り。ただ、これだと従来のICOS Objectへのアクセス方式でもできたことです。。。
4.2 https://xxxxxx.s3-web.jp-tok.cloud-object-storage.appdomain.cloud/
にアクセス
トップページが表示されて期待通り。index.html
なしでもアクセスできるこの結果が期待していた内容でした!
4.3 https://xxxxxx.s3-web.jp-tok.cloud-object-storage.appdomain.cloud/index2.html
にアクセス
存在しないページなので、あらかじめ設定していたエラーページ(error.html)が表示されて期待通り。
4.4 ICOS Firewall設定時のエラー画面
error.htmlを構成していてもこのように表示される。そもそもコンテンツへのアクセス権がないからエラーになるので、こういうもの?
5. 補足
本格的な利用には、(こんなURLでエンドユーザーには直接公開できないので)CNAMEの設定などが必要でしょう。CIS(Cloud Internet Service)だとDNSやCDNやWAF機能も提供しているので、一緒に組み合わせると有効です。