【AWS】S3でWebページを公開する方法

徒然草2.0

はじめに…S3の権限設定は簡単にできると思われがち(というか私は思っていたが)そのように”たか”を括っていて、いざ実際にやってみると意外にこの考え方が難しい。直感的にやるには苦しいのでマニュアルが必要になる。またマニュアルを見てやってみてもバゲットポリシーの設定なんかは、初見の人を殺すと思う。「これで本当に合っているのか?」と心配になる。何度かさわってみて感覚をつかめるようにしたいところである。

(1)バゲットの作成

AWSの管理ページへログインしてアクセス。

“S3″のページへアクセスして“バゲットの作成“を選ぶ。

・「バゲット名」は任意のものにする。

・「AWSリージョン」は自分に合ったものを選ぶ。私の場合は”東京”

・「パブリックアクセスを全てブロック」のチェックを外しておく。「パブリックアクセスのブロックをすべてオフにすると、このバケットとバケット内のオブジェクトが公開される可能性があります。」と注意喚起メッセージが表示されるので忘れずにチェックをいれておく(後述するが、この設定だけでWebに公開されるわけではなく、バゲットポリシーにてオブジェクトを取得できるように設定する必要がある)。

注意点

上記以外はデフォルト設定のままでOK(以下の情報は参考までに記述)

※ACL(アクセスコントロール)は無効にする。

※暗号化キータイプはAmazon S3マネージドキー(SSE-S3)が管理が楽です。

※オブジェクトロックは無効にする。

(2)HTMLファイルをUPLOAD

はじめての時は管理を楽にするためにフォルダを配置しましょう。

HTMLファイルをアップロードするとオブジェクトURLが振り出されるのでアクセスしてみましょう、、すると、

This XML file does not appear to have any style information associated with it. The document tree is shown below.
 
 AccessDeniedAccess DeniedXB26373WWW6FZG4HvkU43QUecOoXV9vW3u4XtbUr9XYF3+uJriNfKzZcrcagNvrm6++agrxJHvFjoRFwSQd40XBQe5o=

…というXMLが表示されて、このままではアクセスができません。

アクセスを許可するバゲットポリシーを記述しましょう。

(3)バゲットポリシーの設定

(先程に作成した)Webへ公開したいバゲットを選択「アクセス許可」のタブを押します。

・バゲットポリシーを選択して、以下のようなバゲットポリシー(JSON形式の設定情報)を作成してください。

※AWS Policy Generatorを使用して編集するとJSON構造の文法エラーなどを引き起こしにくいと思います。

 {
   "Id": "Policy9999999999999",
  "Version": "2012-10-17",
  "Statement": [
   {
     "Sid": "Stmt9999999999999",
     "Action": [
       "s3:GetObject"
     ],
     "Effect": "Allow",
     "Resource": "arn:aws:s3:::xxxxxxxxx/*",
     "Principal": "*"
   }
  ]
 }

注意点

※ResourceにはバゲットのARN(Amazon リソースネーム)を設定し、バゲットのパスはワイルドカード/*で指定する。

※IdとSidというものが扶養されたが念のため9999, xxxxをいれています。

S3で静的ページ環境を設定してみての雑感

・S3での静的ページのホスティングは非常に便利な機能だが、非ITエンジニアにはちょっと敷居が高いと思う(初見で説明なしに環境を構築するのは難しい)

・Resouceのパス設定でフォルダ単位でのアクセス許可が可能になると思われる(未確認)ので、1つのバゲットを色々な方法で使うこともできそう。

徒然草2.0
スポンサーリンク
シェアする
gomiryoをフォローする
ごみぶろぐ

コメント

タイトルとURLをコピーしました