Nedia What's up!

ネディアのエンジニアによるIT技術やサービスの紹介・検証などをお届け!

S3のマウントとバックアップ

いよいよAWSシリーズも最終回。

今まではEC2でのインスタンスの起動やAMIの話でしたが、今回はAmazon Web Serviceの中でもS3についてお話したいと思います。

Amazon S3とは

Amazon S3はAmazon Web Serviceの開発者向けストレージサービスです。

ストレージサービスと聞くとDropboxを想像する方が多いと思います。

DropboxはWindowsやスマートフォンなどのクライアントが使用するデバイスにアプリが提供され、扱いやすく作られていますが、S3はクライアントデバイスではなくWeb上で完結し、Amazon Web Serviceと連携しやすいように作られている点で大きな違いがあります。

DropboxはS3上で作られている・・・なんていう噂も聞きますね。

S3を使ってみる

さて、何はともあれまずはS3を使ってみましょう。

扱い方はシンプルで、S3内にバケットという箱を作って使用するイメージになります。

aws401

Amazon Web Service内のS3にアクセスし「バケットの作成」をクリックします。

aws402

バケット名を設定し、リージョンを指定し作成します。

aws403

これでバケットが作成されました。

作成したバケットを開き、アップロードボタンをクリックします。

aws404

ここにファイルをドラッグアンドドロップするとファイルがアップロードできます。簡単ですね!

EC2からS3バケットへ接続するための準備

冒頭でS3はAmazon Web Serviceとの連携しやすいと書きましたが、先ほど作成したS3のバケットへEC2からアクセスできるようにしたいと思います。

S3へアクセス可能なユーザーの作成

Identity and Access Management(IAM)で専用ユーザーを作成

Identity and Access Managementの管理画面からS3接続用の専用ユーザーを作成します。

ここでは「nedia-s3」としました。

S3の権限付与

再度ユーザー管理画面から先ほど作成したユーザー名をクリックし、ユーザーの詳細画面へアクセスします。

aws409

「ポリシーのアタッチ」をクリックし「AmazonS3FullAccess」を選択しアタッチします。

aws410

s3fsのインストール

EC2からS3バケットをマウントするために、s3fsを使えるようにします。

これでs3fsというコマンドが使用できるようになりました。

passwd-s3fsの作成

Acess Key IDとSecret Access Keyが以下のものだとします。

Access Key ID:XXXXXXXXXXXXXXXXXXXX
Secret Access Key:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

EC2からS3バケットをマウントしバックアップ

S3バケットのマウント

使えるようになったs3fsコマンドを使用してs3バケット「nediatest」をマウントします。

マウントが完了したので確認。

なんと256TBのS3バケットがマウントされました。

ここまでできれば、マウント済S3バケットに対してrsyncを実行しバックアップが取得できます。

これをうまくスクリプト化すればバックアップの自動化ができますね。

EC2を使わずS3のみで静的ホームページを公開する

ここまででS3を使用したバックアップはできましたが、S3では簡易WEBサーバ機能がありますのでこれも使ってみたいと思います。

まずS3管理画面からWeb公開用のバケットを作成します。ここでは「blognedia-web」としました。

aws411

このバケットを右クリックしプロパティを開きます。

aws412

「静的ウェブサイトホスティング」の項目から「ウェブサイトのホスティングを有効にする」にチェックを入れます。

  • インデックスドキュメント:index.html
  • エラードキュメント:error.html

として保存します。

aws413

S3バケットポリシーの作成

次に、ポリシーを作成します。

バケットポリシーは以下のAWS Policy Generatorで作成ができます。

http://awspolicygen.s3.amazonaws.com/policygen.html

■ Step 1: Select Policy Type

  • Select Type of Policy → “S3 Bucket Policy”を選択

aws414

■ Step 2: Add Statement(s)

  • Effect → “Allow”
  • Principal → “*”
  • AWS Service → “Amazon S3″を選択
  • Actions → “GetObject”のみ選択
  • Amazon Resource Name (ARN) → “arn:aws:s3:::バケット名/*”を入力。
    今回は「arn:aws:s3:::blognedia-web/*」としました。

aws415

入力が完了したら「Add Statement」ボタンをクリックし、更に「Generate Policy」をクリックして進めると以下のようなポリシーが作成されました。

バケットポリシーの適用

作成したバケットポリシーをWEB公開用バケットに適用します。

先ほどと同様にWEB公開用バケットのプロパティを開き、「アクセス許可」をクリックします。

aws416

バケットポリシーエディターに作成したバケットポリシーを貼り付け保存します。

aws417

完了したら、公開用バケットにindex.htmlをアップロードしておきます。

再度「静的ウェブサイトホスティング」の項目を表示し、エンドポイントと書かれているURLにアクセスすると先ほどアップロードしたindex.htmlが表示されます。

aws418

もちろん動的なページは表示できませんが、静的なページのみのホームページ作成であればEC2などでインスタンスを構築する必要はなく、S3だけで済んでしまいますのでお手軽です。

最後に

4回に渡ってお送りしたAWSシリーズいかがでしたか。

AWSにはEC2やS3以外にも多くのサービスがありますので、また次の機会に解説ができればと思っています。

それではまた!