AWS麻雀のCDP:Direct Hostingパターン

JAWS-DAYS 2015 AWS麻雀体験企画
– AWS麻雀のCDP役を理解する –

5.Direct Hostingパターンを実践・理解する

AWS麻雀CDP役(8Gpbs+9Gpbs+4TB)

00

今回のDirect Hostingパターンは、CMSなどのWebコンテンツを、S3に静的htmlとして出力するなどで簡単に負荷対策を行う必要が無いWebサーバーを実現できます。

短期間で急激にアクセス数が増加する場合など、EC2のインスタンス増設では間に合わない場合がある。
また、アクセス増を見込んで予め準備しておくのではコスト増となり、他ではロードバランサーとAutoScaleでの対応も検討できるが、設定が必要なうえ少しタイムラグがある。

例えば、wordpressやMovable TypeのようなCMSで更新後htmlに変換し、S3に出力し、静的サイトとして公開する事で、特定サービスのアクセス数が急激に増加してもS3側で問題なく処理できます。
結果、負荷対策を行う必要が無いWebサーバーとして利用することができます。

今回はwordpressのコンテンツをS3に静的htmlサイトとして出力する方法でDirect Hostingパターンを試してみます。但し、Route53を使わず、EC2環境を利用し、デフォルトの割り当てDNSホスト名でwordpress環境を構築します。
wordpress環境は、構築時間を超短縮するため AMIMOTO AMI を利用します。

参考情報は以下です。
wordpressをAmazon S3で運用する方法(ITANDI技術ブログ)
http://tech.itandi.co.jp/2014/05/wordpress-amazon-s3/

WordPress の StaticPress プラグインで Amazon S3 に静的なサイトを構築する(inokappa さん)
http://qiita.com/inokappa/items/d4df29279b94e04590bd

StaticPress
http://ja.staticpress.net/

megumiteam/staticpress-s3
https://github.com/megumiteam/staticpress-s3

S3をWeb Storageとして利用しますが、その環境の構築などは以下を参考にしてください。

AWS麻雀のCDP:Web Storageパターン
https://yukataoka.wordpress.com/2015/04/06/webstorage/

先ず、S3にコンテンツを更新するユーザと権限、アクセスキーの作成を行います。

AWSのコンソール画面で、Identity & Access Management を選択します。
01

Usersを選択し、Create New Users します。
02

ユーザ名を入力し、Create します。
03

Access Key ID と Secret Access Key を保管します。
05


Access Key ID:<——- Access Key ———–>
Secret Access Key:<——- Secret Key ———–>

作成したユーザを選択します。
06

Inline Policies の click here をクリックします。
07

Policy Generator を Select します。
08

以下の画面で、
Effect => Allow
AWS Service => Amazon S3
Actions => All Actions Select
ARN => arn:aws:s3:::バケット名/*
を登録し、Add Statement します。
09

以下が追加されますので、Next Step します。
10

Policy に青拝啓部分の追記し、Apply Policy します。
11

今回の例
{
 ”Version”: “2012-10-17”,

 ”Statement”: [
  {
   ”Sid”: “Stmt1429413096000”,
   ”Effect”: “Allow”,
   ”Action”: [
    ”s3:*”
   ],
   ”Resource”: [
    ”arn:aws:s3:::s3.ykata.net/*”
   ]
  },
  {
   ”Action”: [
    ”s3:ListAllMyBuckets”,
    ”s3:ListBucket”,
    ”s3:GetBucketLocation”
   ],
   ”Resource”: [
    ”arn:aws:s3:::*”
   ],
   ”Effect”: “Allow”
  }
 ]
}

以下が表示されます。
12

続いて、S3に静的htmlを更新する試験用のwordpress環境を作ります。

とにかく時間と手間をかけないため、デジタルキューブさんのAMIMOTO AMIを利用させて頂きます。
手順は以下をご参照ください。

AMIMOTO AMIの使い方(デジタルキューブ さん)
http://ja.amimoto-ami.com/how-to-use/

13

先ず静的HTMLを出力するプラグイン、StaticPress を追加します。
14

追加後、有効化します。設定はデフォルトそのままで良いでしょう。
15

StaticPress で作成した静的htmlをS3にアップするためのプラグイン staticpress-s3 のZIPを先のURLより取得して追加します。
16

追加できると、以下のようになります。
17

先にIdentity & Access Management で設定した、Access Key ID と Secret Access Key  リージョンを設定します。
東京リージョンは ap-northeast-1 です。
18

つづいて、該当するBacketを選択し、変更を保存します。
19

拡張子をhtmlにするため、パーマリンクを以下に変更します。
%postname%.html
20

S3は以前のWeb Storageパターン で構築した環境をそのまま利用します。
21

早速構築をしてみましたが、、、エラー!で終わります。
=>数時間色々粘ってみましたが、GitHubのコード解析するには時間的に厳しく別方法を探す事にしました。
22

代替えとして s3cmd をwordpressのEC2内に設定して、sshのオペレーションで送ることにしました。
以下を参考に設定をすることにします。

[技術ブログVol.10] 最新のs3cmd (ver1.5.0) をyumでインストールする(ディーネット さん)
http://www.denet.ad.jp/technology/2014/03/vol10-s3cmd-ver150-yum.html

staticpress-s3 のプラグインを停止します。
30

以下のようにS3の設定がなくなります。
出力先ディレクトリィにファイルが出力されるだけになります。
31

構築をしてみます。
32

無事出力されました。
33

以降はsshで wordpress が稼働しているEC2のコマンドラインで実施します。
(ssh接続の詳細が不明な方は検索サイトで EC2 ssh などのキーワードで検索ください。)

以下、コマンドでの手順です。

sudo yum update

sudo yum -y –enablerepo epel install s3cmd

インストールが簡単に終わります。
先ず試しにバージョンを表示させようとするとエラーが発生します。

s3cmd –version

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
An unexpected error has occurred.
Please try reproducing the error using
the latest s3cmd code from the git master
branch found at:
https://github.com/s3tools/s3cmd
If the error persists, please report the
following lines (removing any private
info as necessary) to:
s3tools-bugs@lists.sourceforge.net
Error loading some components of s3cmd (Import Error)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Invoked as: /usr/bin/s3cmd ?-version
Problem: ImportError: No module named S3.ExitCodes
S3cmd: unknown version. Module import problem?
python: 2.7.9 (default, Apr 1 2015, 18:18:03)
(後略)

こちらのエラーは Amazon Linux の新しいAMIのPythonのバージョンが影響しているようです。
以下のForumの投稿が参考になりました。

AWS Discussion Forums
https://forums.aws.amazon.com/thread.jspa?threadID=174345

投稿の回答に従ってコマンドを実行します。

sudo yum-config-manager –enable epel/x86_64
sudo yum install ansible -y
sudo alternatives –set python /usr/bin/python2.6
sudo yum clean all
sudo yum install yum-python26 -y
sudo yum install python-boto -y
sudo yum update -y

s3cmd –version が以下のとおり表示されるようになりました。
34

以下のサイトの情報を参考に、s3cmdを設定、実際にS3にファイルを転送してみました。

Amazon S3編~s3cmdでS3を操作してみよう!~(ナレコムAWSレシピ さん)
http://recipe.kc-cloud.jp/archives/1059

s3cmd –configure

Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key: <——- Access Key ———–>
Secret Key: <——- Secret Key ———–>
Default Region [US]: ap-northeast-1

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:Enter
Path to GPG program [/usr/bin/gpg]:Enter

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [No]:Enter

On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can’t connect to S3 directly
HTTP Proxy server name:Enter

New settings:
Access Key: <——- Access Key ———–>
Secret Key: <——- Secret Key ———–>
Default Region: ap-northeast-1
Encryption password:
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: False
HTTP Proxy server name:
HTTP Proxy server port: 0

Test access with supplied credentials? [Y/n] y
Please wait, attempting to list all buckets…
Success. Your access key and secret key worked fine 🙂

Now verifying that encryption works…
Not configured. Never mind.

Save settings? [y/N] y
Configuration saved to ‘/home/ec2-user/.s3cfg’

s3cmd put -r /var/www/vhosts/i-e849991d/static s3://s3.ykata.net

上記コマンドでS3に転送した結果が以下です。
35

AWSのコンソールでS3にアップされた様子です。
36

wordpressのサイトです。
37

S3のサイトです。
38

一部CSSや、JavaScriptのファイルか、フォルダ構成に不備があるのか、wordpressのテーマなどの設定の影響か、レイアウトが崩れてしまっています。
=>今回はCDPの実践手順の確認なので、これでOK(妥協)にします。(汗)

JAWS-DAYS 2015 AWS麻雀体験企画 に戻る

広告

About Yukihito Kataoka
@ykataoka

現在コメントは受け付けていません。

%d人のブロガーが「いいね」をつけました。