スクリーンショット_2020-01-30_00

AWS習得編 ゼロからわかるAWS超入門 CHAPTER3


こちらの書籍について学んだことです。

CHAPTER3 Webサイトを公開しよう

AWSでWebサーバーを作り、自社のホームページを公開できるようにする。
AWSでWebサーバーを作る方法はいくつかあるが、この章ではマネージドサービスのS3を使う。

3-1 Webサーバーの仕組みと作り方

Webサーバーは、ホームページなどのWebのコンテンツを返すサーバー
ユーザーがWebブラウザから接続してきたときに、あらかじめ保存されているコンテンツを返す機能がある。
Webサーバーの仕組みと、それをAWSで実現するための方法について說明する。

3-1-1 Webサーバーの仕組み

Webサーバーは、Webブラウザからの接続を待ち受けて、接続があったらその要求に従ってコンテンツを返すサーバー
Webサーバーを構成するには、いくつかのやりかたがあるが、シンプルで代表的な構成は、サーバー上に、そうした機能を持つWebサーバーソフトを実行しておき、要求に応じて、サーバーに置かれているファイルを返すというもの。

具体的なWebサーバーソフトとしては、Apacheやnginxなどがある。
nginxは、Apacheほど高機能ではないが、軽量で多数のアクセスにも耐えられるため、人気が高まっている。

3-1-2 AWSを使ってWebサーバーを構成する

AWSを使ってWebサーバーを構築する方法は主に2通りある。
EC2を使う方法と、S3を使う方法

前者はアンマネージドサービス、後者はマネージドサービス
AWSではマネージドサービスを使ったほうが設定や管理が簡単。
この章ではマネージドサービスであるS3の使い方について学ぶ

①EC2
Amazon Elastic Compute Cloud (Amazon EC2)
仮想サーバーを提供するサービス
仮想サーバーを構築してそこにApacheやnginxなどのソフトウェアをインストールすることで、Webサーバーとして機能させる。

②S3バケットを使う方法
Static website hostingという機能を有効にすると、Webサーバーとして使えるようになる。

大きな違いは、Webサーバー上でプログラムを動かすことができるかどうか。
あらかじめアップロードしたコンテンツを見せるだけの場合は、S3を使うほうが有利。
なぜならマネージドサービスなので管理の手間がない。そして、アクセスが殺到したときも、AWSがうまく処理してくれる。
しかし、プログラムの実行が必要な場合はS3では対応できないため、EC2を使った構成が必要となる。
第4章で取り上げるブログシステムを構築する場合、Webサーバー上でブログ投稿などを受け付けるためにプログラムの実行が必要なため、EC2を使って構成しなければならない。

S3バケットにコンテンツファイルを置く
S3は、ストレージサービスを提供するマネージドサービス。
ストレージサービスというのは、簡単に言うとファイル置き場。
アップロードしたファイルを永続的に保存し、好きな時に取り出すことができる。
特定のユーザーにしかアクセスできないようにする認証機能もある。
S3において、ファイルの置き場はS3バケットと呼ばれる。
S3を使ってファイルを管理するには、AWSマネジメントコンソールなどから操作して、その置き場となるS3バケットを作る。簡単に言えば、S3バケットはパソコンに接続されているディスクやUSBメモリなどのドライブに相当するものだと考えると分かりやすい。
AWSシンプルアイコンでは、バケツのようなアイコンで示す。

S3を使ったWebサーバーの構成
S3でWebサーバーを作る場合、全体の構成をP.82のようにする。

まず、AWSマネジメントコンソールなどを使ってS3バケットを作る。
このとき次の2つの設定をする。

①Webサーバー機能をオンにする
S3バケットはただのファイルの置き場なので、最初の状態ではWebサーバーとして機能しない。
S3バケットの設定画面からStatic website hosting機能を有効にすることで、Webサーバーとして機能する。

②匿名アクセスできるようにする
最初の状態では、S3バケットを作ったときに許可したユーザーしかアクセスできない。
そこで、誰でもアクセスできるように、匿名アクセスを有効にする。

上記2つの設定をすると、S3はWebサーバーとして機能する。
あとは、HTMLファイルや画像ファイルなど、公開したいコンテンツをアップロードすれば、ユーザーはそれらのコンテンツを見ることができるようになる。
ファイルのアップロードには、AWSマネジメントコンソールを使うほか、ドラッグ&ドロップでファイル操作できるような便利ツールを使うこともできる。

独自ドメイン名でのアクセスや暗号化通信も見据えたWebサーバーの構成図
以上が、S2を使ったWebサーバーの基本。

しかし、この構成だとAWSによってつけられたドメイン名でしかアクセスできない。
実際にWebサーバーを構築するときは、ちゃんとしたドメイン名でアクセスしたいことが多い。

また、httpsで通信暗号化をしたい場合は次のように構成する。

①独自ドメイン名でアクセスしたいとき
S3の名前をかえ、その上でDNSサーバーの設定をする。
S3の名前はあとから変えられないから、その段階でちゃんとドメイン名になることを意識しよう!

名前ミスったらめんどいけどAWS CLIというのを使えば名前だけ新しく作って中身はコピーで行けるらしい
やり方はググるとよし

②暗号化したいとき
S3バケットのWeb機能は暗号化に対応していない。もし暗号化したいときはCloudFrontというサービスを設置する方法を取る。
CloudFrontは、AWSにおいて、コンテンツのキャッシュ機能を提供する方法をとる。
このサービスには暗号化の機能があるので通信を暗号化できる。具体的にはCloudFrontを適切な設定をしてS3の前段に置くと、http://でなくhttps://でアクセスすることによって、通信の暗号化ができるようになる。

CloudFrontを使った通信の暗号化については、第7章で說明する。


3-2 S3の特徴と料金

特徴や料金について說明

3-2-1 S3バケットのリージョン

S3パケットのリージョン
どのリージョンに作成するかを指定

3-2-2 S3バケットの命名規則

ドメイン名は唯一無二を意識!

S3の用途は多岐!
各種AWSサービスのログの出力先
データベースのバックアップ先
各種設定ファイルの保存先

3-2-3 S3の料金

保存している容量と転送量に基づいた重量課金
単価はリージョンによって異なる

アクセス数と比例する変動費、定額である固定費

変動費はファイルをダウンロードするのにかかる費用
ファイルサイズが大きいものを提供する場合、それなりの費用がかかる
固定費はS3に置いたファイルサイズに対する課金

どのくらい費用がかかるかはAWS簡易見積ツールで計算できる
http://aws.amazon.com/calculator/

ストレージクラス
S3バケットには品質を表すストレージクラスという概念がある。

S3標準
S3Intelligent-Tiering
S3標準 低頻度アクセス
S3 1ゾーン 低頻度アクセス
S3 Glacier
S3 Glacier Deep Archive

の6種類ある

高品質なほど高価

デフォルトはS3標準

保存用はGlacierが安い
DeepArchiveがつくと耐久性が99.99%まで落ちる

低頻度系は低コスト

3-3 この章での操作の流れ

この章ではS3を使ってWebサイトを公開する手順を学ぶ

①S3バケットを作成する
ドメイン名でアクセスできるようにする予定なら一意の名前をつける

②Static website hosting機能を有効にする
①のS3バケットに対して、Static website hostingをオンにする。これでWebサーバー機能が有効になる。
ここでS3バケットにアクセスするときのURLが決まる。
このURLのことをエンドポイントという。

③匿名アクセスできるようにする
このままだとアクセス権がない。そのため、匿名アクセスできるようにする。
バケットポリシーをS3バケットに対して適用する。

④公開したいファイルをアップロードする
以上3つの設定で、Webサーバーとして機能するようになる。
あとはコンテンツをアップロードするだけ。
AWSマネジメントコンソールもしくはもっと使いやすいS3対応のファイル転送ツールなどを使って、コンテンツを構成するファイルをアップロードする。そうすれば、そのファイルをWebブラウザで参照できるようになる。

S3を管理操作できるユーザー
S3を管理操作できるのは、「S3FullAccess」というポリシーが設定されたユーザーに限られる。
第二章では管理者権限を持つユーザーを作成した。
このポリシーはS3の操作ができる。


3-4 S3バケットの作成

AWSにサインイン

3-4-1 S3ダッシュボード

S3をポチ

3-4-2 S3バケットを作成する

S3バケットを作成する。

S3のリンクをポチ

S3バケットを作成

バケットをwww.jun-web-free.com
リージョンを東京

右下の次へではなく左下の作成をポチ

バケットできた!

3-5 Static website hosting機能

S3バケットの設定を変更したい


3-5-1 S3バケットのプロパティ

www.jun-web-free.comをポチ

上のタブに概要、プロパティ、アクセス権限、管理、アクセスポイントがあるので、
プロパティをポチ

static website hostingをポチ

3-5-2 Static website hostingの設定


3つの選択肢がある。
・このバケットを選択してウェブサイトをホストする
・リクエストをリダイレクトする
・ウェブサイトのホスティングを無効にする

一番下になっているはずなので、一番上をポチ

するとインデックスドキュメント、エラードキュメント、リダイレクトルールが表示される

インデックスドキュメントはindex.html、エラードキュメントはerror.htmlにしておく。

リダイレクトルールはapacheとかnginxがインストールされてるEC2インスタンスサーバーから返すやつ。今回は空にしとく。

保存をポチ

static website hostingが有効になった。


3-5-3 バケットに割り当てられたURLを確認する

バケットに割り当てられたURLを確認する

static website hostingをポチ

http://www.jun-web-free.com.s3-website-ap-northeast-1.amazonaws.com

これはエンドポイント

独自ドメイン名は6章で付け方を学ぶ

3-6 バケットポリシーの設定

アクセスするとエラーになる
読み取りアクセスできるようになっていないからである

3-6-1 匿名アクセスできるようにするポリシー

カスタムポリシーはJSON形式

全ユーザーに読み取り権限を与えるポリシーに限っては設定用JSON形式データがAWSのドキュメントとして公開されている。

ドキュメントからコピペし、バケット名の部分を変更するだけで変更できるので容易。

JSONデータをテキストエディタで用意しとく

----------------------------------------
{
 "Version":"2012-10-17",
 "Statement":[{
	"Sid":"PublicReadGetObject",
       "Effect":"Allow",
	  "Principal": "*",
     "Action":["s3:GetObject"],
     "Resource":["arn:aws:s3:::example-bucket/*"
     ]
   }
 ]
}
----------------------------------------

これの設定の意味は次の通り
①Version
この設定構成のバージョン番号。指定された通りの値をそのまま使う。
②Sid
このポリシーの名称。
③EffectとPrincipal
Effectは許諾の種類、Principalは誰に対してを指定する
ここで指定されているAllowは許可、*は全ユーザーを示す。
つまり、全ユーザーに対して許可という意味になる。
④ActionとResource
Actionは「どんな操作を」
Resourceは「何に対して」を指定する。
Actionで指定されているs3:GetObjectは読み取りの操作を示す。
Resourceで指定しているarn:aws:s3:::example-bucket/*は、その対象。
次の書式。
arn:aws:s3:リージョン:アカウント:バケット名/パス名
:とだけ書かれて何も無い部分は指定しないという意味
*は全てを表す
つまり、この例では、リージョン、アカウントに関わらず、example-bucketという名前のs3バケットのすべてのパス(*)に対する操作という意味になる。

----------------------------------------
{
 "Version":"2012-10-17",
 "Statement":[{
	"Sid":"PublicReadGetObject",
       "Effect":"Allow",
	  "Principal": "*",
     "Action":["s3:GetObject"],
     "Resource":["arn:aws:s3:::www.jun-web-free.com/*"
     ]
   }
 ]
}
----------------------------------------


3-6-2 バケットにポリシーを設定する

パブリックバケットポリシーの管理ができるようにするために。
s3のアクセス権限をポチ

ブロックパブリックアクセスの画面になるので、右中くらいにある編集をポチ
ACLのチェックは打ったまま、バケットポリシーのチェックは外して保存をポチ

本当に変更していいかの画面になるので指示に従って確認をポチ

アクセス権限を設定するためにバケットポリシーを開く
エディタが開く

jsonをコピペして保存をポチ

警告出るけど問題なし。

ユーザーポリシーは、ユーザー側の権限を編集
リソースベースのポリシーは、リソース側の権限を編集


3-7 ファイルをアップロードする

http://www.jun-web-free.com.s3-website-ap-northeast-1.amazonaws.com
でもう一度アクセスしてみると403から404になってるはず

3-7-1 index.htmlファイルをアップロードする

intex.htmlをまずは作る

Welcome S3 Bucket.と表示するだけのもの

ほんでS3に戻って、概要からアップロードを選択
ファイルを追加する画面になったらDD
アップロードをポチ

3-7-2 ブラウザでアクセスできることを確認する

https://s3-ap-northeast-1.amazonaws.com/www.jun-web-free.com/index.html

にアクセスしてみると・・・?

書いたページが開いた!!!

3-7-3 画像をアップロードする

今回はいいや

コンテンツタイプ
拡張子で自動的にhtmlとか画像とか認識してくれるけど、珍しい拡張子の場合はメタデータを変更(P.110)


3-8 ツールを使ってアップロードする

ブラウザを使わずにアップロードできるようになる方法
今回はパス

3-8-1 ドラッグ&ドロップ操作でS3を扱えるツール

今回はパス

3-8-2 アクセスキー

今回はパス

3-8-3 S3 Browserのインストール

今回はパス

3-8-4 S3 Browserの初期設定

今回はパス

課金を防ぐには
S3の料金は、保存している容量と転送量によって決まる。
すべてのファイルを消せば課金されない。
6章でまた使うが、課金されたくないので消しとく。

OK!

S3はストレージ機能を提供するマネージドサービス
S3の料金は保存している容量と転送量に基づいた従量課金
Webサーバーとして動かすにはStatic website hostingを有効にして、かつ匿名アクセスできるようにS3のバケットポリシーを変更する。


この記事が気に入ったらサポートをしてみませんか?