ラベル s3 の投稿を表示しています。 すべての投稿を表示
ラベル s3 の投稿を表示しています。 すべての投稿を表示

記事一覧

2010年6月11日金曜日

Amazon Web Services Console が S3 をサポート

Amazonは着実にサービスをリリースしますね。
Googleも着実にサービスをリリースしてきていますがAmazonのほうが企業システム寄りの機能を地道にリリースしてきているように思います。

今回はAmazonが提供しているシステム管理者用のWeb ConsolでS3(ストレージサービス:99.999999999% availability)を管理できるというお知らせが届きました。



早速画面を見てみました。



ストレージなのでフォルダやファイル管理ですが直感的に操作することができて良いと思います。
もちろんすべてのリージョンをサポートしていますのでSingaporeに置いているファイルも管理できます。
ダウンロードが1ファイルづつしかまだ実行できないようなのは、改善してほしいですね。
(ファイルを選択して右クリックして表示されたメニューにDownloadがあります)

WindowsにインストールするようなCloudBerry Explorer for Amazon S3など便利なツールもfree版でありますが、AWS ConsolでS3をサポートしたことでWebブラウザがあればどこからでもAmazonのサービスを1つのコンソールから操作することができるのは大変便利ですね。

継続的にEnhanceされてくることは確実ですので期待したいと思います。

2010年5月11日火曜日

[TechMemo] 第11回 Amazon EC2 USリージョンからAPリージョンへの移行(後半)

今回は先日公開しようとしてしていた内容の後半部分を説明します。

なんか長くなってしまったのですが。。

内容サマリ
1)移行するEC2環境の構成について
2)AMIのリージョン間コピー/APリージョンでAMIの登録

*** 上記、二つの手順は前回に説明しています ***

3)Amazon EBS(Elastic Block Store)データの移行
4)移行後のシェルの修正
5)Amazon Machine Image(AMI)の再作成

Amazon EBS(Elastic Block Store)データの移行

Amazon EC2には不揮発性のディスクを提供するEBS(Elastic Block Store)というサービスがあります。
EBSはデータベースのデータなど永続的に保持したいデータの格納用に提供されたものです。
小職のテスト環境のデータベースは、Oracle社から無償で提供されている Oracle Database 10g Express Edition(XE) です。
このXEをEBS上に構築しています。
EBSを別のEC2リージョンに移行するコマンドは、見当たらなかった(たぶんない)のでLinuxのコマンドで移行作業を行いました。

*** 小ネタ: 無償のOracleはどこで手に入る? ***********************
◆Oracle Technology Network からDL

※ユーザ登録必須
※私はここからDLしたXEを自分のEC2にuploadしてOracle Database環境をEBS上に構築しました。

◆AmazonEC2のAMIもあった!
@US Eastリージョン
AMI ID:ami-98be5cf1
Source:incharge/www.mototaker.com/ja_JP.32/ruby-db-ami/oracle_10gR2_XE_Univ_32Bit-Ruby_on_Rails233_Server-1.0-image.manifest.xml
※AmazonのAMIでは日本語が使えるもの(Universal版)はあまりないのでご注意。
※上記のAMIは日本語っぽいですねw
※US East、APリージョンではキーワードoracleで検索してもありませんでした。
※APリージョンには製品版のOracleがバンドルされたAMIすら存在しません。
******************************************************************

*** 豆知識: リージョン間AMIコピーコマンド(ec2-migrate-image) ***
※昨年末くらいからEBS上にAMIを構築するサービスも提供されていますが、前回のBLOGで説明したAMIのリージョン間コピー用コマンド(ec2-migrate-image)はEBS上のAMIを移行できません。
******************************************************************

◆データ移行手順

@US Eastリージョンでの作業

1)EBSにあるすべてのファイルをtarなどでアーカイブ
2)アーカイブしたファイルをs3へアップロード

@Asia Pacificリージョンでの作業

3)APリージョンに登録したAMIの起動(前回のBLOGで説明したAMI)
4)EBS上にVolumを作成
5)S3からダウンロード
6)ダウンロードファイルの展開とファイルのアクセス権限変更

◆データ移行内容詳細

@US Eastリージョンでの作業

1)EBSにあるすべてのファイルをtar+gzipでアーカイブ

※EBSボリュームは/volというフォルダにマウントされています。
oracle関連のファイルはすべて/vol/oracle配下にありますので oracle フォルダ以下すべてをアーカイブして2GBづつのファイルに分割します。

cd /vol
tar czvf oracle.tar.gz ./oracle
split -b 500m oracle.tar.gz oracle.tar.gz.
mkdir /vol/oracleimg
mv oracle.tar.gz.* /vol/oracleimg/.

2)アーカイブしたファイルをs3へアップロード

EC2からS3へのアップロードはrubyで作成されたスクリプト:s3sync.rb で行います。
以下の例では、S3に101ora-ap バケットを作成しそこに /vol/oracleimg フォルダを
同一名でコピーします。

cd /usr/local/s3sync
export AWS_ACCESS_KEY_ID='xxxxxxxxxxxxxxxx'
export AWS_SECRET_ACCESS_KEY='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

ruby s3cmd.rb createbucket 101ora-ap
ruby s3sync.rb -r --delete /vol/oracleimg/ 101ora-ap:oracleimg

*** 小ネタ:s3sync.rb はどこで手に入る? *************************
以下の記事に書いてある通りやれば簡単に使えるようになります。
http://developer.amazonwebservices.com/connect/entry!default.jspa?categoryID=100&externalID=931&fromSearchPage=true

・s3sync.rbのセットアップ
wget http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
tar -xzvf s3sync.tar.gz
cp -r s3sync/ /usr/local/
******************************************************************

@Asia Pacificリージョンでの作業

3)APリージョンに登録されているAMIの起動(前回のBLOGで説明したAMI)

※ここで起動されたAMIはrcが正しく動作しないためElasticIPも設定されずに動的なグローバルIPが割り当てられたままのとりあえずのインスタンスという状態です。

4)EBS上にVolumを作成

US Eastで使用しているボリュームは使えませんのでAPリージョン用にボリュームを作成します。
EC2コンソールで50GBのボリュームを作成後、フォーマット(/dev/sdh)してマウントします。

4-1.EC2コンソールで50GBのボリューム作成とアタッチ

コンソールのメニュー Volumes をクリックして EBS Volumes の画面を表示します。
「Create Volumes」をクリックすると以下の画面が表示されるので Size 入力エリアに50と入力します。
Availavility Zone:は現在インスタンスが起動しているZoneに合わせます。ボリュームはZone固有です。



※ec2-create-volumeというコマンドもあるのですがなぜか実行するとエラーになりました。
# ec2-create-volume --size 50 --availability-zone ap-southeast-1
Client.InvalidZone.NotFound: The zone 'ap-southeast-1' does not exist.

次に作成された Volume をデバイスに Attach します。
作成したVolumeはコンソールに表示されますので左のチェックボックスをチェックして「Attach Volumes」をクリックすると以下の画面が表示されるのでDevice:を選択して「Attach」ボタンをクリックします。



アタッチ後確認してみるとブロックデバイスができています。
# ls -al /dev/sdh
brw-r----- 1 root disk 8, 112 May 5 07:58 /dev/sdh

※コマンドで実行する場合は以下の通り
# ec2-attach-volume vol-80d160e8 --instance i-9dace8cf --device /dev/sdh

4-2.mkfsコマンドでデバイスのフォーマット(プロンプトはすべてyesとする実行例)

# yes | mkfs -t ext3 /dev/sdh
mke2fs 1.40.4 (31-Dec-2007)
/dev/sdh is entire device, not just one partition!
Proceed anyway? (y,n) Filesystem label=
OS type: Linux
Block size=4096 (log=2)

・・・省略・・・

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

4-3.フォーマットされたデバイスのマウント

# mount /dev/sdh /vol

5)S3からダウンロード

作成したVolumeがファイルシステムから見えるようになったのでS3からoracle関連のアーカイブファイルをダウンロードします。
S3へのアクセスのために以下の環境変数を設定します。

# export AWS_ACCESS_KEY_ID='xxxxxxxxxxxxxxxx'
# export AWS_SECRET_ACCESS_KEY='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# export AWS_CALLING_FORMAT='SUBDOMAIN'
※US Eastでは環境変数 AWS_CALLING_FORMAT はデフォルトの REGULAR でよいので指定していませんでしたがAPでは必須です。(参照)

# cd /usr/local/s3sync
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.ad /vol/oracle.tar.gz.ad &
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.ac /vol/oracle.tar.gz.ac &
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.ab /vol/oracle.tar.gz.ab &
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.aa /vol/oracle.tar.gz.aa &
分割したファイルの結合
# cd /vol
# cat oracle.tar.gz.aa oracle.tar.gz.ab oracle.tar.gz.ac oracle.tar.gz.ad > oracle.tar.gz

6)ダウンロードファイルの展開とファイルのアクセス権限変更

# chown oracle oracle.tar.gz
# chgrp dba oracle.tar.gz
# su - oracle
% cd /vol
% ls
lost+found oracle.tar.gz
% tar xvfz oracle.tar.gz

◆sビットを付与
% chmod ug+s oracle
% chmod ug+s tnslsnr

移行後のシェルの修正

US EastリージョンからコピーしてきたAMIで起動されたインスタンスはrc(起動シェル)に記載された内容がUS Eastリージョン用になったままです。
ここではリージョン固有の記述がされたシェルの内容を修正します。

◆rcで実行させているシェルの修正について

1)Elastic IP Address
Elastic IP Addressとは固定IPを利用できるサービスです。
(Elastic IP Addressについては書きだめのテキストがあるのでこれも後日掲載します。鮮度はなくなってますが。。)
リージョンが変わればもちろんIPアドレスも振り直しですね。
まずはAWSのWebコンソールからAPリージョンのElasticIPを購入します。



購入したIPアドレスをインスタンスIDに関連付けなければいけません。
AmazonEC2のインスタンスIDは起動時に動的に付与されますので起動するたびに変化します。
起動後に手動で関連付けることももちろん可能ですが。。
インスタンス起動時に動的に関連付けるためのシェルが以下のようになります。
シェルをみるとわかると思いますが引数 region でAPリージョンの値を指定しています。
てっきりコマンドを実行しているインスタンスがデフォルトの region なると勝手に信じていたのでエラーになる理由がわからずちょっとハマりました。

#!/bin/bash
#
# Associate EC2 Elastic IP Address with INSTANCE
source /root/.ec2env
var1=`ec2din --region ap-southeast-1| grep running | gawk '{print $2}'`
#echo $var1
ec2assocaddr 購入したIPアドレス -i $var1 >/dev/null 2>&1

2)EBSのアタッチ
EBSを作成すると固定の識別ID(Volume ID)が付与されます。
インスタンスIDは起動時に動的に付与されますので起動ごとに変化します。
つまりEBSはインスタンス起動後にアタッチしてあげる必要があります。
そのための起動シェルは以下のようになります。
このシェルにも region 引数を追加しています。

#!/bin/bash
#
# Attach EBS VolumeID: vol-84ac00ec to INSTANCE
source /root/.ec2env
var1=`ec2din --region ap-southeast-1 | grep running | gawk '{print $2}'`
#echo $var1
ec2attvol --region ap-southeast-1 vol-84ac00ec -i $var1 -d /dev/sdh >/dev/null 2>&1
mount /dev/sdh /vol

Amazon Machine Image(AMI)の再作成

システム起動時のシェルを修正したら忘れずに再度AMIを作成します。

これを忘れてシステムを停止してしまうと設定が消えて苦労が水の泡なので注意しましょう!
※上記はRoot Device Type: instance-store

※EBS上にAMIを作成できるサービスも始まっているのでそれを利用すれば設定は消えません。

私のインスタンスはまだS3上に置いたAMIから起動するタイプです。
以下AMI再作成の手順です。

1)AMIのサイズは10GBまでという制限があるのでoracleが配置してあるボリュームをumountします。

umount /vol

2)AMIを作成するコマンドの実行

ec2-bundle-vol -d /tmp -k pk-xxxxxxxxxxxxxxxxx.pem -c cert-xxxxxxxxxxxxxxxx.pem -u 999999999 -r i386 -p oracle10gXE32bitUniv2

正常に終わると/tmpの下にmanifestファイルとAMIを10MB単位に分割したファイルがたくさんできています。

3)作成されたAMIをS3にアップロード

ec2-upload-bundle -r ap-southeast-1a -b tnoraclexe -m /tmp/oracle10gXE32bitUniv2.manifest.xml -a AccsessKey値 -s SecretAccessKey値

上記のコマンドが2)で作成したファイルをS3の tnoraclexe バケットにアップロードします。

4)S3に保管したAMIをAPリージョンに登録

ec2-register --region ap-southeast-1 tnoraclexe/oracle10gXE32bitUniv2.manifest.xml

※ここでも region 引数を指定しています。
US Eastでは指定する必要なかったのですが、ほとんどのコマンドで region 引数を明示的に指定する必要があるようですね。


以上、長々と書いてしまいましたがなんとなくお分かりいただけましたでしょうか?

おまけ

US East と AP ネットワークレイテンシを計測した結果の画面スナップショットを掲載します。
ググルとすでにBLOGなどで掲載しているのを見つけることができますね。

結論から言うとAPリージョンのほうがUS Eastに比べると2.5倍くらい早いですね。
いままでレイテンシーが大きいのではと懸念されていた方もAPリージョンならその心配もない様に思います。

ちなみにAmazonが提供しているAMIはデフォルトではpingは通らない設定になっているのでWebコンソールのSecurity Group設定でpingを通す設定してください。
ピングを通す設定は以下の通りです。

Protocol FromPort ToPort IP
-------------------------------------------
icmp -1 -1 許可するIPアドレス

◆以下レイテンシーの計測結果

1)ローカルPCからUS EastとAsia Pacificリージョンにping実行結果



2)US Eastインスタンスからwww.nikkei.comへping実行結果



3)Asia Pacificインスタンスからwww.nikkei.comへping実行結果



以上 前後半2回に分けて紹介したEC2インスタンスのリージョン間移行手順。

みなさまのお役立てば幸いです。

ではまた。

2009年9月11日金曜日

[TechDay] 第9回 Amazon S3用クライアント:CloudBerry S3 Explorer

Amazon S3のクライアントはFirefoxのアドオンソフトのS3 Organizerを使っていましたがS3にUploadしたときのファイルのタイムスタンプが表示されずいまいちだなぁと思っていました。

You Tubeの紹介ビデオやWeb上の紹介記事では表示されているに。。

とりあえず他にもないのかなと思ってAWSのリソースページで確認してみました。



S3 Organizerは星2つですが、なんと星4つの同じような機能ツールがあるじゃないですかー。

ということで早速ダウンロード&インストールしました。



独立したアプリケーションですがこちらのほうがいい感じです。星4つは正しいかも。

またファイルのタイムスタンプも表示されているので自動バックアップでUploadされたファイルも確認できて安心安心。

■こちらがCloudBerry S3 Explorerの画面

S3 Organizerをお使いの方は乗換お勧めします。

■S3 Organizerの画面

Uoload Timeが表示されていない。。

2008年8月19日火曜日

[TechDay] 第3回 Amazon Elastic Compute Cloud (Amazon EC2)

前々回、前回とEC2のGetting Startedについて説明してきました。今回はこのテーマの最終回になります。

最終回は 自分のインスタンス・イメージの作成とバックアップ です。

EC2のインスタンスは停止してしまうとすべての内容が消えてしまうということを前回説明しました。今回はいろいろカスタマイズしたAMIが再利用できるようにする方法について説明します。

自分用のAMIを作成するにはAmazonのストレージサービスであるAmazon Simple Storage Service(Amazon S3)を利用します。S3については以前書いたBLOGを参照してください。

自分用AMI作成手順


Amazonがデフォルトで用意しているAMIをカスタマイズして自分用のAMIを作成するためのステップは以下の通りです。

1)デフォルトのAMIから好みの物を選択してAMIを起動します。
2)カスタマイズします。
3)自分のキー・ペアを現在稼動しているインスタンスへコピーします。
4)稼働中のインスタンスに自分のキー・ペアをバンドルしてイメージコピーを作成します。
5)作成したイメージコピー(自分用のAMIファイル)をS3にアップロードします。
6)S3へアップロードしたAMIファイルをec2に登録

こうすることで5)の時点のインスタンスイメージがS3へバックアップされた状態になります。
4)と5)の処理を定期的に実施することでシステム全体のバックアップがされていることになります。
これはなかなか便利ですね。
本番環境のバックアップとしてだけではなく、本番環境のバックアップをすぐに他のインスタンスとして起動することも出来るのでリアルなテスト環境としても活用できそうです。

それでは以降でそれぞれのステップについて実行した例を交えながら説明します。
2)までは第2回までの内容を参照してください。以下の説明は第2回目の最後の状態になっているとそのままスムーズに実行できると思います。

ステップ3 キー・ペアのコピー


第2回で生成したキー・ペアを現在起動中のインスタンスにセキュア・コピーを使ってコピーします。Windows用のセキュア・コピーはPuTTYの pscp を使用して行います。

C:\pscp -i PuTTY用秘密鍵ファイル(*.ppk) EC2用秘密鍵ファイル(*.pem) EC2用認証ファイル(*.pem) ユーザ名@ドメイン名:コピー先フォルダ名(フルパス)



以下の図は /mnt に正しくコピーされたかSSHでログインして確認した画面です。



ステップ4 キー・ペアをバンドルしたイメージコピー作成


インスタンス環境にキー・ペアがコピーされましたのでこのキーをバンドルしたAMI(インスタンス・イメージ)を作成します。PuTTY(SSH)でインスタンスに接続してコマンド ec2-bundle-vol を使って作成します。

# ec2-bundle-vol -d AMIの保存先パス -k EC2用秘密鍵ファイル(フルパス/*.pem) -c EC2用認証ファイル(フルパス/*.pem) -u EC2のユーザID(AWSのアカウントNO(数値)) -r [i386|x86_64] -p 自分のAMI用プレフィックス

以下実行例です。AMI作成は10分ぐらいかかりました。





/mnt 配下に出来上がったファイルを確認します。
指定したプレフィックスがついた約10MBのファイルがたくさんできているのがわかります。




ステップ5 イメージコピー(自分用のAMI)をS3へアップロード


/mnt 配下に作成したイメージファイルをS3へアップロードします。
あらかじめS3へイメージファイル格納用のフォルダを作成しておきましょう。

S3へのアップロードは、以下のコマンドで行います。

# ec2-upload-bundle -b S3格納用フォルダ(バケット)名 -m manifestファイルのパス -a AWSのAccess Key ID -s AWSのSecret Access Key

S3へのアップロードはほんの1分ぐらいで終わりました。





ステップ6 S3へアップロードしたAMIファイルをec2に登録


ステップ5までで自分用AMIファイルが出来上がりバックアップもとることができました。
作成したAMIファイルを使用して自由にインスタンス起動するには、作成したAMIをEC2へ登録する必要があります。登録はec2-api-toolsのec2-registerコマンド使ってクライアントから行います。

C:\mydoc\Prototype\AWS>ec2-register 101tn-bucket/myami-200808.manifest.xml

コマンドを実行するとAMI IDが割り振られます。以降はこのAMI IDを使用してインスタンスを起動することができます。



以下は現在のインスタンスを停止して登録したAMI IDでインスタンス起動した例です。
※テスト用で起動したインスタンスは必ず停止しましょう! 安いとはいえ課金されていますので。

2008年6月23日月曜日

[TechDay] Amazon Simple Storage Service(Amazon S3)を使ってみた

インターネットのストレージサービスは、いまでは非常にたくさん出ていますね。
弊社でもいくつかのストレージサービスを利用しています。
用途に応じて使い分けすると良いと思います。

今回のBLOGでは弊社で利用しているストレージサービスの中から非常に有名なAmazonのサービスを1つ紹介します。
Amazon Simple Storage Service(Amazon S3)。
初期投資ゼロで毎月使った分だけ課金されるという最近話題のクラウドコンピューティングのサービス形態です。
2008/02/24発売号(Vol.43)のWEB+DB PRESS(ウェブDBプレス:技術評論社)に紹介されていましたね。雑誌ではストレージサービスだけではなくアプリケーションまで含めた仮想化サーバーのWebサービスであるAmazon Elastic Compute Cloud (Amazon EC2)も紹介されています。弊社ではEC2は今のところ必要ありませんがもし利用したらここでも紹介します。Amazonのこれらのサービスは amazon web services (AWS) として商品化されています。

さて、話を戻してS3についてお話しましょう。
このBLOGではサービスの申し込みからファイルのアップロード、課金ステータスの確認までを紹介します。
AWSを利用するにはアカウントが必要です。Amazon.comで書籍を購入したことがある方ならアカウントをそのまま利用できます。私も英語書籍はAmazon.comで購入しているのでアカウントはそのまま利用しました。ここではアカウント作成については省略させていただきます。

Amazon Simple Storage Serviceの申込


ここのサイトに行ってsing upをします。



上記ページの「Click here to sign up!」をクリックすると登録画面になります。

Amazon Simple Storage Service内容と申込手続き


完全な従量課金でなかなかリーズナブルではないでしょうか。



◆決済用カード情報の登録



◆申し込み内容確認画面表示
 Complete Sign Upボタンのクリックで申し込み完了。



◆申し込み完了画面



◆Amazon Simple Storage Service申し込み確認メール



Amazon Simple Storage Service用のツールのインストール


S3にファイルをアップロードしたりS3からファイルダウンロードするのに便利なツールをインストールします。

◆Firefox Organizer for Amazon S3 (S3Fox)のダウンロードとインストール

Amazon Web Services » Developer Connection » Resource Center » Amazon Simple Storage Service を選択した画面



Amazon Web Services » Developer Connection » ... » Amazon Simple Storage Service » Developer Tools を選択した画面



Amazon Web Services » Developer Connection » ... » Amazon Simple Storage Service » Developer Tools » Firefox Organizer for Amazon S3 (S3Fox) を選択した画面



https://addons.mozilla.org/en-US/firefox/addon/3247 ここをクリック



「Add to Firefox」ボタンをクリック。



「Accept and Install」ボタンをクリック。



プラグインをインストールしたのでFirefoxを再起動。



S3Foxの起動と設定


ブラウザメニューの「ツール」に「S3 Organizer」というメニューが追加されていますね。
このメニューを起動します。



するとブラウザアプリとは思えないようなファイル転送用のアプリケーションが起動します。
左側のペインにローカルフォルダが表示され、右側ペインにS3のフォルダが表示されます。



S3へのアクセスにはアカウントに割り当てられたIDとキーを使用します。
Access Key IDと Secret Access Key をそれぞれ設定します。

※Access Key IDと Secret Access Key はWeb Service AccountのAWS Access Identifiersで確認しましょう。



ここまでの設定が終わればファイルをアップロードできます。
以下は1つのファイルをアップロードしている画像です。




◆メモ
S3 Organizerはブラウザメニューから起動しましたが、ブラウザの右隅の角にある「S3FOX」をクリックしても起動します。


課金ステータスの確認


Web Service Accountの「AWS Account Activity」で確認します。




以上 ちょっとダラダラとした感じのレポートになってしまいましたが。。参考になれば幸いです。