Monthly Archives: 8月 2013

【AWS】Elastic Beanstalk で AWS SDK for PHP 2 をインストールしてみた

こんにちは、私用携帯のUSBポートが壊れてあたふたしてる KingOfComedy です。
約2ヶ月ぶりの更新で、3日坊主という言い回しすら生温い KingOfComefy です!

□ これでも仕事しているの

さて、前回の記事(気になるアプリ紹介vol.1)の続きと思いきや、ちょっと真面目なお話です。

先日、業務の関係で DynamoDB を使用することになり、PHP から操作する必要がでてきました。
プロジェクト環境はもちろん Elastic Beanstalk で作っています。

今回の記事では、AWS SDK for PHP 2 のインストール手順と注意点を記載しています。
心を込めて書きますので、一文一文噛み締めて読んでくださいね。

□ どうしたら使えるの?

まずは、タイトルに書かれている、「AWS SDK for PHP 2」をインストールします。
なので、EC2 側で PEAR を使ってインストールしましょう(※後述)

ちなみに、Beanstalk で作られた EC2 は初めから PEAR がインストールされていますので、
何も気にすること無く、PEAR コマンドが使用できます。
なんのこっちゃと思った人は、私と同じ駆け出し技術者ですね。一緒に頑張りましょう。

□ インストール

さて、インストールするためのコマンドです。
ec2-user で以下を打ち込んでみましょう。

[ec2-user@ip-XX-XX-XX-XX ~]$ pear channel-discover pear.amazonwebservices.com
[ec2-user@ip-XX-XX-XX-XX ~]$ pear install aws/sdk

パーミッションがどうの言われて、失敗したと思います。
じゃあ root 権限でインストールすれば良いの?
と思った人は、半分正解です。

なぜ半分なのかというと、インストール先の設定が変わるからです。

□ インストール先を確認しよう

まずは、ec2-user の方から見てみましょう。

[ec2-user@ip-XX-XX-XX-XX ~]$ pear config-show

ズラッと設定内容が表示されたと思います。
ではインストール先である、[PEAR data directory] を見てみましょう。

PEAR data directory  data_dir  /usr/share/pear/data

こんな感じですよね。
では次に root 権限で見てみましょう。

[ec2-user@ip-XX-XX-XX-XX ~]$ sudo su -
[root@ip-XX-XX-XX-XX ~]$ pear config-show

同じく[PEAR data directory] を見てみると、

PEAR data directory  data_dir  /root/pear/data

/root 以下に変わっているのが分かります。

しかし、/root 以下にインストールしてしまうと、
PHP 側からは権限の問題でアクセスできないので使用できず、インストールした意味がありません。
/usr 以下にインストールできれば使えるようになりますが、
ec2-user ではアクセス権限の問題でインストール出来ません。
これは困りましたね。

□ インストール先の変更

というわけで、root 権限でも /usr 以下にインストールするように変更しましょう。
[PEAR data directory] の内容を変更すれば良いのですが、
よくよく見ると、他の項目も /root 以下でいっぱいです。
これでは何かと不安なので、全て変えてしまいます。

[root@ip-XX-XX-XX-XX ~]$ mv /root/.pearrc /root/org.pearrc

これで終わりです。

/root/.pearrc が設定ファイルの本体です。
これをリネームしただけで、デフォルトの設定に戻ります。

□ もう一度インストール

設定したファイルを適用するために、一度 root から抜けましょう。
その後、root 権限を取得して、設定を見なおしてみましょう。

[root@ip-XX-XX-XX-XX ~]$ exit
[ec2-user@ip-XX-XX-XX-XX ~]$ sudo su -
[root@ip-XX-XX-XX-XX ~]$ pear config-show

設定内容が変わったと思います。

では、もう一度インストールしましょう!

[root@ip-XX-XX-XX-XX ~]$ pear channel-discover pear.amazonwebservices.com
[root@ip-XX-XX-XX-XX ~]$ pear install aws/sdk

これで無事に /usr 以下へインストールすることが出来ました!

□ 最後に

root 権限を得るために、

[ec2-user@ip-XX-XX-XX-XX ~]$ sudo su -

と打ち込んでいましたが、
ec2-user のまま、コマンドの先頭に sudo を付けるだけでも大丈夫です。

e.g.
[ec2-user@ip-XX-XX-XX-XX ~]$ sudo pear install aws/sdk

人によっては root ユーザーで操作するのを嫌がる方もいますので、お好みで…

長々とお付き合い頂きありがとうございました。
何かの足しになれば嬉しいです。

それではまたお会いしましょう!

最新式!(?)bfEBS用のEBSイメージのインポート

お久しぶりです。
リプレーションのインフラ担当SE、utunです。

今回はSEC(通常のEucalyptusでも大体同じ)のbfEBSイメージを自動登録する手法についての模索を、適当な感じに書いていきます。

bfEBS用のEBSイメージの用意

まぁそこからだよね。
実はこれは、前に「EBSバックアップな話」で書いた通りでOK。

但し、ちょっと今回考えているのは、「WEB上から」一発で入れたいよね!
ってところがミソなんだ。

だから、前の話でバックアップしたデータを、「Webサーバ上で公開」して下さい!
うちも適当にそのうち公開するんでお楽しみに!

従来のbfEBS用のEBSイメージのインポート

従来(?)のやり方だと、以下のようになる。
0、自分のLinuxPCを用意する(まぁ皆すでに持ってるし、特に語ることはないよね!)
1、ダミーのvolumeを作成
2、ダミーのinstanceを作成
3、ダミーinstanceにダミーvolumeをアタッチ
4、ダミーinstanceのssh rootログインを有効化
5、自分のLinuxPCからダミーinstanceのアタッチしたダミーvolumeデバイスにgzipした標準出力経由でデータ上書き
gzip – < EBSイメージ | ssh -i key.priv root@instanceIP “zcat > /dev/vdb”
6、ダミーinstanceからダミーじゃなくなった元ダミーvolumeをデタッチ
7、元ダミーvolumeからsnapshotを作成
8、snapshotからEMI登録
9、ダミーをダミーしてダミーによるダミーのダミーからダミーしてダミー

こんな感じで、最後にはダミーがゲシュタルト崩壊を起こすこと必至です。
超めんどくさいね。
きっとこの手順で毎回やっている人は、ドMか特殊な精神構造の人に違いない。

残念ながら、私は標準的なMなので、さすがにここまでの苦行を何度も繰り返す事は出来ません。

そこで

自動化するわけですよ。
まぁ、まだ作成中なんで、コマンドベースで

頑張ればきっと自動化できるよ!

ってくらいの内容を書いていきます。

最新式!(?)bfEBS用のEBSイメージのインポート

まず、従来の方法を見て一番思うのは、

ダミーインスタンスいらなくね!?

ってことだよね。
なんでボリュームにデータ入れ込むだけなのに、わざわざダミーインスタンスとかわけわかめなものを作らねばならんのか。
皆きっと思ってる。
ダミーインスタンスなんていらないんや!

ってことで、色々試してみた結果。

同じ容量のsnapshotなら直接上書きできる

事が分かりました。
これを前提に手順を組みなおします。

1、ダミーvolumeを作成
euca-create-volume -z $AZ -s $VOLUME_SIZE
2、ダミーsunapshotを作成
euca-create-snapshot $VOLUME_ID
3、ダミーsunapshotにWeb上のイメージを直で上書き
curl “http://image_file_url” > /path/to/eucalyptus/volumes/$SNAPSHOT_ID
4、snapshotからEMI登録
euca-register -n “$IMAGE_NAME” –root-device-name /dev/sda –snapshot $SNAPSHOT_ID
5、勝利の余韻に浸りながらビール

なんと手順が半分になちゃったぜ!
そしてダミーがたった3回しか登場しない!
しかもインスタンス作らないんで、実際の作成時間は半分以下になることうけあいです!

まぁただ、明らかにいかがわしいやり方だから、
いつ出来なくなるかわからんけどね!

蛇足

ちょっと前に友人と飲みに行った「魚金」。
魚がまじやばい。
画像は刺身6点盛り(メニュー上は)。
どう見ても12点盛り・・・。

uokin

Eucalyptusベースなプライベートクラウド「SEC」

お久しぶりです。
リプレーションのインフラ担当SE、utunです。

今回は、先日うちの会社からリリースしたプライベートクラウドパッケージの
「SEC」について、ちょっと宣伝的な感じで書いていきたいと思います。
SEC HP : http://ripplation.co.jp/sec/

Simple speedy & Effortless Cloud(SEC)とは

まぁぶっちゃけるとEucalyptusなんですけど。
ただ、うちの技術者が「低価格」で、且つ「まともに使える」構成を設計して、
ちょっと設定とかを最適化して、スタートアップイメージを詰め込んだ。
そんな感じのEucalyptusなんです。

ただ、Eucalyptusってのが一つのミソでして、
なんと言っても簡単です。
クラウド関連の技術者が昨今Openstackとかに大量に流れているのは知ってますし、
今となってはもう、

Eucalyptusって何?

っていうインフラ技術者も多いんじゃないでしょうか。
前に「プライベートクラウドな話」でも書きましたが、
Eucalyptusは2012年頭ごろまでは、間違いなく「オワコン」でした。
ところがその後色々ありまして、今のものを見てみると、はっきり言って最高です。

一応Openstack、Cloudstackも触ったことがありますが、
Eucalyptusの最高な所は、

とりあえず触ってみたら動く

って所ですね。
えぇ。
簡単です。

コマンドが不要な範囲ではね!

まぁ、SECではコマンドが不要な範囲でちゃんと使えるように、最初から準備されているので、
言ってみれば

最高な部分だけで使える

ようになっている訳です。

そんな感じで、
いかがでしょうか。
同クラスのプライベートクラウドだと、500万円くらいするであろう所、
なんと今だけ150万円(定価180万円)です!

一社に一台、もしくは、一プロジェクトに一台SEC!
宜しくお願い致します!

今回は宣伝ばかりですが、
そんなところで〆させて頂きます。

蛇足

近々フィリピン辺りに旅行に行きたいな・・・。
と思って、「セブ島」で画像検索しました。
もちろん、マリンスポーツだとか、南の島的な画像を期待していた訳ですが、
トップ2枚目になんか夜のお店の写真が・・・。

うん。
興味はあるけどね。

sebu