Amazon EC2とPostgreSQL 9.0
インスタンスへの接続
インスタンスが起動したら、SSHで接続する。
SSHクライアントの確認
使用するクライアント環境によって秘密鍵の取り扱いが異なるので、確認しておこう。
・OpenSSHが使える環境
EC2で作成した公開鍵・秘密鍵のペアはOpenSSH形式なので、LinuxやMac OS Xであればダウンロードした秘密鍵をそのまま使用できる。筆者のクライアント環境はMac OS Xなので、そのままEC2のインスタンスにアクセスすることができた。作業が行いやすいよう、Windowsで動作するTera Term ProをSSHに対応させたttsshもOpenSSHの秘密鍵を使用できるようだ。
・PuTTY
Windowsでよく使用されているPuTTYはOpenSSHの秘密鍵には対応していない。付属のputtygenを使ってOpenSSHの秘密鍵(拡張子.pem)を読み込み、PuTTYが使用できる秘密鍵の形式(拡張子.ppk)に変換して欲しい。
今回は以下の例のように、ダウンロードした秘密鍵を~/.sshディレクトリに格納している。必ずパーミッションを600に設定しておく。
秘密鍵の配置変更例
$ mkdir ~/.ssh $ chmod 700 ~/.ssh $ mv ~/Downloads/kasouka.pem ~/.ssh/ $ chmod 600 ~/.ssh/kasouka.pem $ ls -l ~/.ssh/kasouka.pem -rw-------@ 1 tmiyahar staff 1692 10 11 12:06 /Users/tmiyahar/.ssh/kasouka.pem
インスタンス情報の取得と接続
EC2のインスタンスは起動する毎に動的にグローバルIPアドレスが取得されるので、AWS Management Consoleでインスタンスの情報を取得する。
画面左のNavigationから「Instances」をクリックして、インスタンスのリストを表示する。
図13:インスタンス一覧(クリックで拡大) |
My Instancesに作成したインスタンスが表示されたら選択し、右クリックするか、Instance Actionsから「Instance Management」→「Connect」を選択する。ダイアログが表示され、SSHで接続するためのコマンドライン例が表示されるので、コピー&ペーストで端末のコマンドライン部分に張り付けると簡単にインスタンスに接続できる。
図14:インスタンス接続情報(クリックで拡大) |
sshコマンドの-iオプションで使用する秘密鍵を指定している。デフォルトではカレントディレクトリに置いていることになっているので、適宜変更を加えておく。
インスタンスへの接続例
$ ssh -i ~/.ssh/kasouka.pem ec2-user@ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com The authenticity of host 'ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com (xx.xx.xx.xx)' can't be established. RSA key fingerprint is 6b:eb:af:3f:63:33:d8:2a:c4:1c:df:63:79:87:7e:29. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com,xx.xx.xx.xx' (RSA) to the list of known hosts. Last login: Tue Oct 11 05:21:11 2011 from xx.xx.xx.jp __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| See /usr/share/doc/system-release/ for latest release notes. No packages needed for security; 10 packages available [ec2-user@ip-xx-xx-xx-xx ~]$ uname -a Linux ip-10-146-89-114 2.6.35.14-95.38.amzn1.i686 #1 SMP Thu Aug 25 17:11:35 UTC 2011 i686 i686 i386 GNU/Linux
root権限の取得
上記の接続方法では一般ユーザーec2-userでログインしている。管理を行うにはroot権限が必要だ。ユーザーec2-userはあらかじめsudoコマンドを使ってroot権限による管理作業が行えるように設定されている。
/etc/sudoersの記述
$ sudo visudo (略) ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment) #includedir /etc/sudoers.d ec2-user ALL = NOPASSWD: ALL ---
sudoコマンドですべてのコマンドをroot権限で実行できるようになっていますが、もしユーザーrootに切り替えて作業を行いたい場合には-sオプションを付けてsudoコマンドを実行する。
sudo -sによるユーザーrootへの切り替え
$ sudo -s # id uid=0(root) gid=0(root) 所属グループ=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
日本語環境の設定
作成したばかりのインスタンスはロケールの設定が英語設定になっているので、日本語環境に設定を変更しておく。設定の情報は/etc/sysconfig/i18nに記述されている。以下のようにLANG設定を変更する。
/etc/sysconfig/i18nの変更内容
#LANG="en_US.UTF-8" LANG="ja_JP.UTF-8"
設定はログインし直すと適用される。
以上でAmazon EC2インスタンスの作成から接続までが完了した。次回は、インスタンスにPostgreSQL 9.0をインストールする。