Android 端末による実機テスト手順
HT-03A 買いましたよ。
さっそく端末で「Hello, Android」を表示させてみたので、手順をメモしておきます。
Amazon S3 を使ってみたよ
AMI を保存するため、急遽必要に迫られたので環境構築していきます。
今回も CodeZine に沿って進めて行くため、ほとんど書く内容は変わらないと思います。
利用申請
申請は終わってるので飛ばします。
利用準備
クライアントツールの起動
インストールしてブラウザ再起動したら、[ツール]-[S3 Organizer]をクリックして S3Fox を起動します。
このとき、警告ウィンドウがでましたが、私は無視しました。
バケットの作成
バケット(=トップディレクトリ)を作成します。ちなみにぱではなく、ばです。
- 右上にある [Create Bucket/Directory] をクリックします
- bucket 名を入力します。ただし、S3 全体でユニークとなる名前でないとエラーになります*1
使ってみる
アップロード
右の枠内にドラック&ドロップでアップロードできました。楽々です。
ダウンロード
ダウンロードしたいファイルを選択し、画面真ん中になる ← ボタンを押すとダウンロードされます。こちらも楽ですね。
まとめ
手軽にファイルのやり取りができるのは良いですね。
といっても、しっかり料金が発生してしまうので、あまり手軽に使いすぎるのもどうかと思います。
*1:私はアカウント名にしました
EC2 での AMI 作成手順
前々回は、インスタンスの起動・停止・確認まで進みました。そして、今回は AMI の作成を行いたいます。
作成理由は、EC2 をシャットダウンするとディスクに保存した内容が失われてしまうのですが。AMI を作成することにより、作成した時点のディスク内容でインススタンス起動できます。*1
今回も CodeZine に沿った形で作業を進めて行きます。今回の内容は2ページ分ですね。
事前情報
- AMI は S3 に転送して保存する
- EC2 から S3 への転送料は課金対象外
- イメージ化されるディレクトリは「/dev/sda1」のみ
ssh 接続
今回は『AWS Management Console』を利用した手軽な接続方法を解説します。
- AWS Management Console/EC2 から、左メニューの [Instances] をクリック
- [Connect] ボタンをクリック
- [Connect Help - Secure Shell (SSH)]というタイトルのウィンドウが表示される
- ウィンドウ下に、ssh 接続するためのコマンドが添付されているので copy and paste
- ターミナルで、以前に作成したインスタンスキーが保管されているディレクトリでコマンド実行*2
適当なファイル作成
そのまま AMI 作成しても、元の AMI と違いが無いので、何かしらファイルを作成しておきます。
root@domU-12-31-39-00-5E-33:/root# ls test
AMI 作成
「X.509証明書」転送
前々回に取得しておいた「X.509証明書」を AMI 側へ転送させます。
$ scp -i ec2_instance_key.pem *.pem root@ec2-75-101-180-145.compute-1.amazonaws.com:/mnt cert-xxxxx.pem 100% 916 0.9KB/s 00:00 ec2_instance_key.pem 100% 1675 1.6KB/s 00:00 pk-xxxxx.pem 100% 926 0.9KB/s 00:00
ssh 接続して転送されたことを確認
/mnt にファイルが存在するかをチェックします。
# cd /mnt # ls cert-xxxxx.pem ec2_instance_key.pem lost+found pk-xxxxx.pem
おぉ、ちゃんと転送されていましたね。
AMI 作成
はい、ようやく作成できます。
コマンドで、user の後にはアカウント名*3を指定してください。
途中で確認を求められますが。インスタンスタイプが「m1.small」なら、そのまま Enter を押せばよいです。
# ec2-bundle-vol -d /mnt --privatekey pk-xxxxx.pem --cert cert-xxxxx.pem --user xxxx-xxxx-xxxx --fstab /etc/fstab Please specify a value for arch [i386]: Copying / into the image file /mnt/image... Excluding: /sys /proc /dev/pts /dev /media /mnt /proc /sys /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/z25_persistent-net.rules /mnt/image /mnt/img-mnt 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.002536 s, 413 MB/s mke2fs 1.41.4 (27-Jan-2009) /etc/fstab: # Legacy /etc/fstab # Supplied by: ec2-ami-tools-1.3-30748 /dev/sda1 / ext3 defaults 1 1 /dev/sda2 /mnt ext3 defaults 0 0 /dev/sda3 swap swap defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 Bundling image file... Splitting /mnt/image.tar.gz.enc... Created image.part.00 Created image.part.01 Created image.part.02 Created image.part.03 Created image.part.04 Created image.part.05 Created image.part.06 Created image.part.07 Created image.part.08 Created image.part.09 Created image.part.10 Created image.part.11 Created image.part.12 Generating digests for each part... Digests generated. Unable to read instance meta-data for product-codes Creating bundle manifest... ec2-bundle-vol complete.
ほぼ初期状態にも関わらず、作成には2・3分もかかりました。
作成した AMI を S3 へアップロード(仮)
作成されたデータは、EC2 側の /mnt ディレクトリにありますので、これを S3 へアップロードしてみます。
と、ここで重要なことに気づきました。
S3 の環境構築をしていない
ここ以降から構築について書いても良いのですが、読み難くなるので分けて書きます。
Amazon S3 を使ってみたよ
作成した AMI を S3 へアップロード(真)
${...} は、それぞれ指定して実行してください。
# ec2-upload-bundle --bucket ${アップ先のバケット名} --manifest image.manifest.xml --access-key ${Access Key ID} --secret-key ${Secret Access Key} bucket ${アップ先のバケット名} ... Uploaded image.part.00 Uploaded image.part.01 Uploaded image.part.02 Uploaded image.part.03 Uploaded image.part.04 Uploaded image.part.05 Uploaded image.part.06 Uploaded image.part.07 Uploaded image.part.08 Uploaded image.part.09 Uploaded image.part.10 Uploaded image.part.11 Uploaded image.part.12 Uploading manifest ... Uploaded manifest. Bundle upload completed.
前述した通り、この転送料は課金されません。
AMI 登録
インスタンス起動できるよう AMI の ID を発行します。そのため、ログアウト(インスタンス起動停止)してから作業してください。
$ ec2-register ${アップ先のバケット名}/image.manifest.xml IMAGE ami-0558bf6c
現在登録中の AMI を確認してみましょう。
$ ec2-describe-images -o self MAGE ami-0558bf6c aws-kawakami/image.manifest.xml 443600062368 available private i386 machine aki-a71cf9ce ari-a51cf9cc
AMI の ID が「ami-0558bf6c」だと分かります。
また、デフォルトでは private となっていますが、これを public にすることも可能です。
AMI 起動
AWS Management Console を使って起動してみたいと思います。
- 左メニューにある [AMIs] をクリック
- 左側のコンボボックスで、「Private Images」を選択
- 発行した AMI の ID が一覧上に並ぶので、選択して [Launch] ボタンをクリック
これで起動します。
確認
root@ip-10-251-211-144:~# ls test
きちんと前に作成した「test」ファイルが存在することが確認できました。
以上で、今回の検証は終わります。
まとめ
まず、起動した仮想マシン上での作業がとにかく遅い。単にファイル作成するだけでもモッサリしててイラっと来る場合があります。このレスポンスの遅さは、国内にサーバーが置かれたら改善されるかもしれませんが、それ意外の方法でも何か対策が取れないか模索すべきです(既にある?)。
また、AMI の保存という作業が予想以上にメンドクサイです。どこがメンドウかと言うと、/mnt ディレクトリ情報が保存できないため、再度 AMI を保存したいときは一から作業しないとダメなところです。この辺は別の仕組みで保存できるらしいので、その方法しだいでは改善できるのかもしれません。
AWSの操作方法比較
今回は『EC2コマンドライン』、『ElasticFox』、『AWS Management Console』の使い方を比較しながら進めていきます。
事前準備
EC2コマンドライン
- Amazon EC2 API Tools をサイトからダウンロード
- Java ランタイムのインストール
- 各種、環境変数の設定
ElasticFox
- Firefox ブラウザをインストール
- ElasticFox アドオンをインストール
AWS Management Console
- 必要なし
インスタンス起動
ElasticFox
インスタンス停止
ElasticFox
まとめ
CUI だと手間に感じていた部分が、GUI だと楽にできますね。
今回は2種類の GUI 操作できる方法を試してみましたが、個人的には『AWS Management Console』の方が良いと感じました。
理由は、ブラウザに捕われないことと、初期設定が無くすぐに始められる手軽さです。あとは、UI が自分好みというのもありますね。
Amazon EC2 でのインスタンス起動・停止・確認方法
ホント今更ですが、Amazon EC2 少し触ってみました。
あまり情報収集もしていなかった所なので、中途半端な知識しかないので触っていくうちに覚えられたら良いなぁと。
開始方法については以下をメインに参考にしました。ほとんど CodeZine で書かれてあることの繰り返しになると思います。
Amazon EC2を動かしてみよう〜Amazon EC2/S3環境構築のすべて〜
証明書を取得
- EC2 を動かすためには証明書が必要らしいので、早速 Amazon Web Services から取ってきます。
- 「AWS」ページ上から [Your Account] - [Access Identifiers] をクリックします。
- 「Access Identifiers」ページに遷移するので、下の「X.509 Certificate」枠にある [Create New] をクリックします。
- 「Create A New Certificate」ページに遷移され、「You can only have one certificate associated with your AWS account.」と警告文がでますが、「1アカウントに対し、1証明しか発行できませんよ!」と言ってるらしいので、無視して [YES] をクリックします。
- 「Create Success」ページに遷移され、[Download Private Key File]と「Your X.509 Certificate file」ボタンをクリックして、プライベートキーとクリティカルファイルをローカルにダウンロードして、任意ディレクトリ*1に保管してください。
以上が、CodeZine の1ページ目の内容。いやー、まったく同じで読む価値ないです。それほど記事の内容が分かりやすいということですね。
Amazon EC2 を操作するためのコマンドラインツール
「Amazon EC2 API Tools」というツールで操作できるらしいので、こいつを取得します。EC2 サービスは全て API 経由での操作になるようなので、かなり大事なツールになるようですね。
- ここの [Download the Amazon EC2 API Tools] をクリックすると、ダウンロードが開始される。
- 解凍して、任意ディレクトリ*2に配置します。このツールを実行するために、Javaランタイムが必要らしい。だが、前回 java を最新にしていた俺に抜かりはなかった。
- ここで環境変数を設定する必要が出てきますが、私のマシンは Mac なので、他のプラットフォームだと違ってくる*3と思います。各々が配置したディレクトリを参照するよう、環境変数を設定してください。
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/ export EC2_HOME=/usr/local/ec2-api-tools export PATH=$JAVA_HOME/bin:$PATH:$EC2_HOME/bin export EC2_PRIVATE_KEY=~/key/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem export EC2_CERT=~/key/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
最後にコマンド実行してエラーにならなければ、ツールのインストール&設定は完了。
$ ec2ver 1.3-34128 2009-03-01
環境変数の設定だけは、各プラットフォームに合わせての設定が必要ですが。それ以外は CodeZine にある記事通り進めれば問題なく設定できますね。
AMI の選択
公式や一般公開されてある分を以下のコマンドで一覧表示できます...が、公式や一般公開分を合わせると大変な数で、正直よく分かりません。
$ ec2-describe-images -x all
ザッと眺めた限りだと、Ubuntu8 は使ったことあるので、このイメージを使わせてもらう事にする。
IMAGE ami-ec48af85 alestic/ubuntu-8.10-intrepid-base-20090418.manifest.xml063491364108 available public i386 machine aki-a71cf9ce ari-a51cf9cc
この中で必要なデータは、IDである「ami-bbfe19d2」だけらしいので、これだけメモっておく。
インスタンス起動
ssh 接続するためのキーを作成します。
$ ec2-add-keypair ec2_instance_key | sed -e "1d" > ec2_instance_key.id $ chmod 400 ec2_instance_key.id
「ec2_instance_key」部分は任意の文字列で良いみたいです。
作成されたキーに対し、自分のみアスセス権限を与えます。
インスタンス起動
このコマンドを実行したタイミングから課金開始されるようです。
$ ec2-run-instances ami-ec48af85 -k ec2_instance_key RESERVATION r-8cf973e5 443600062368 default INSTANCE i-58600831 ami-ec48af85 pending ec2_instance_key 0 m1.small 2009-04-21T16:05:10+0000 us-east-1c aki-a71cf9ce ari-a51cf9cc
前述にある通り、AMI の ID と ssh キーを指定して実行しています。
特にオプションは付けていないので最小規模のsmallインスタンス(m1.small)で起動されたようですね。
インスタンス起動状態の確認
$ ec2-describe-instances RESERVATION r-8cf973e5 443600062368 default INSTANCE i-58600831 ami-ec48af85 ec2-75-101-208-31.compute-1.amazonaws.com domU-12-31-39-00-DD-05.compute-1.internal running ec2_instance_key 0 m1.small 2009-04-21T16:05:10+0000 us-east-1c aki-a71cf9ce ari-a51cf9cc
- AMIのIDは ami-ec48af85 ですよ。
- m1.small(最小規模)で起動しましたよ。
- 起動時間は 2009-04-21T16:05:10+0000(たぶん米タイム)ですよ。
くらいは分かりますね!確認すると言っても、これくらい分かってれば良さそうな気がします。
あと、「ec2-75-101-208-31.compute-1.amazonaws.com」というドメイン名が重要らしく、アクセスするときに必要になるようです。
アクセス可能ポートを設定
初期状態だと、どのポートも閉じてるらしいので開設作業を行います。
$ ec2-authorize default -p 22 GROUP default PERMISSION default ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0 $ ec2-authorize default -p 80 GROUP default PERMISSION default ALLOWS tcp 80 80 FROM CIDR 0.0.0.0/0
インスタンスへのアクセス
ここでドメイン名が登場します。
$ ssh -i ec2_instance_key.id root@ec2-75-101-208-31.compute-1.amazonaws.com The authenticity of host 'ec2-75-101-208-31.compute-1.amazonaws.com (75.101.208.31)' can't be established. RSA key fingerprint is 53:69:0c:76:a4:b2:a5:eb:4d:f6:65:60:5c:91:8f:1e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'ec2-75-101-208-31.compute-1.amazonaws.com,75.101.208.31' (RSA) to the list of known hosts. Linux domU-12-31-39-00-DD-05 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. To access official Ubuntu documentation, please visit: http://help.ubuntu.com/ Amazon EC2 Ubuntu 8.10 intrepid AMI built by Eric Hammond http://alestic.com http://ec2ubuntu-group.notlong.com root@domU-12-31-39-00-DD-05:~#
「信憑性を確立できません。」と Warning が出てましたが、無理に通しました。
これが正解か不正解かは不明ですが、とりあえずログインはできました。
本日は使わないのでログアウトします。
root@domU-12-31-39-00-DD-05:~# exit logout
CodeZine での注意書き
インスタンス停止
起動状態の確認
$ ec2-describe-instances RESERVATION r-8cf973e5 443600062368 default INSTANCE i-58600831 ami-ec48af85 ec2-75-101-208-31.compute-1.amazonaws.com domU-12-31-39-00-DD-05.compute-1.internal running ec2_instance_key 0 m1.small 2009-04-21T16:05:10+0000 us-east-1c aki-a71cf9ce ari-a51cf9cc
インスタンスID「i-58600831」をメモります。
停止
$ ec2-terminate-instances i-58600831 INSTANCE i-58600831 running shutting-down
shutting-down とあるので、正常に停止したようですね!
念のため起動状態を確認してみましょう。
$ ec2-describe-instances RESERVATION r-8cf973e5 443600062368 default INSTANCE i-58600831 ami-ec48af85 terminated ec2_instance_key 0 m1.small 2009-04-21T16:05:10+0000 aki-a71cf9ce ari-a51cf9cc
ドメイン名が表示されていた場所が、terminated に変わってますね。これは切断って意味なので、キチンと切断されていたようです。
以上で、Amazon EC2を動かしてみよう 〜Amazon EC2/S3環境構築のすべて〜分の内容は終了です。
Vim 勉強会
社内勉強会での内容ですが、別に問題ない内容なのでブログに書き残します。
まぁ間違ってるかもしれないので、ミスがあったら指摘して頂けると幸いです。
移動
アクション | コマンド | 備考 |
---|---|---|
左へカーソル移動 | h | |
下へカーソル移動 | j | |
上へカーソル移動 | k | |
右へカーソル移動 | l | |
行頭へカーソル移動 | 0(数字) | |
行末へカーソル移動 | $ | |
1単語右へカーソル移動 | w | |
1単語左へカーソル移動 | b | |
指定行番号へカーソル移動 | 行番号gg | |
指定数分、下へカーソル移動 | 指定数j | |
page up | ||
page down | ||
先頭行へカーソル移動 | gg | |
最終行へカーソル移動 | G |
検索
アクション | コマンド | 備考 |
---|---|---|
曖昧検索 | /hoge | %hoge%に一致する単語へ移動 |
完全一致検索 | /\ |
hogeに一致する単語へ移動 |
閉じ括弧へ移動 | { にカーソル選択して、% | 括弧なら何でも可能 |
マーク付け | :ma a | a とマーク付ける |
マーク移動 | `a | a とマークを付けた単語へ移動 |
その他
アクション | コマンド | 備考 |
---|---|---|
行番号表示 | :setlocal number | |
ファイルを開く | :e hoge.txt |
まとめ
これ内容じゃなくて、コマンド一覧だろう!ってツッコミはなしの方向で。
gem パッケージの参照先について
gem でインストールしたパッケージの参照先ですが、複数存在してややこしいので整理します。
/usr/local/lib/gem/
管理者権限でインストール and 参照可能な領域。
sudo gem install hoge
とすると、ここにのみインストールされます。
その他
他にもインストール先が存在していましたが、どこか忘れたし、なぜここにインストールされたか分かりませんでした。
とりあえず、上記2カ所さえ知っていれば、gem 参照関連のトラブルは回避しやすいと思います。