AWS(利用ノウハウ)

NFS
ボリュームはEC2間でコンソールの設定では共有できない(当然か)ので、NFSを使う
 ポイント: セキュリティグループのINBOUNDに 2049を加えること

しばらく停止したEC2からの再開
  1. AWSコンソールのEC2からインスタンスを表示
  2. 再開するインスタンスにチェックを入れ、アクション→開始
  3. 起動したら、接続を表示
  4. ~/.ssh/conigを以下のように編集
    • Host aws.anagix.com
    •      HostName ec2-13-114-3-219.ap-northeast-1.compute.amazonaws.com
    •      User ubuntu
    •      IdentityFile "~/Dropbox/MinimalFab/anagix1n.pem"
  5. ssh aws.anagix.comでログイン
  6. 他所からもaws.anagix.comで接続できるよう、DNS設定をかえる


EC2への接続
  1. AWSのコンソールからEC2サービス
  2. EC2ダッシュボードからインスタンス(リージョンの選択に注意)
  3. インスタンスのIPをメモ
  4. セキュリティグループを開き、アクション->インバウンドルールを編集する
  5. 自分のPCから、
    ssh -i "(pem)" ubuntu@(インスタンスのIP)

WinSCPによるファイルコピー

pemファイルを指定すればppkファイルを生成してくれた


無料枠(1年のみ)を越えないための注意

  1. EC2は動いている限り、インスタンス使用の合計750時間でカバーされるが、停止すると、多分IPの利用と、EBSの使用が30GBを越えると課金対象になる。私の場合、1つのEC2が8GBで、EBSを30GBに設定(あとで縮小することはできないので注意)しているので、このインスタンスを停止し、新しいインスタンスを使うと8GB超過になる。インスタンスをすべて動かしていればEBSの課金はないが、インスタンス使用時間の合計750時間を越えてしまう。
  2. データ通信はAWS のサービスをすべて合わせて 15 GB のデータ送信と 1 GB のリージョンデータ転送が無料。それを越えると、10TBまで$0.14/GBと大きなペナルティになる。
  3. スナップショットを作成しない。無料枠は1GBなのですぐ超える。
スナップショットの削除方法
 スナップショットを削除するには、AMIをderegisterしなくてはならない
 deregisterするには、以下のようなCLIを実行する
aws ec2 deregister-image --image-id ami-745ba412
 そのために、aws configureコマンドで、AWS Access Key ID, AWS Secret Access Key, Default region name
 を指定しなくてはならないが、前者の2つ(Credential)は以下のように作る
 コンソールから、IAMを選択し、ユーザを作成する
   ユーザ名: anagix
    グループ名:anagix
   アクセスの種類:プログラムによるアクセス
   アクセス権限(ポリシー名): AdministratorAccess
 とした。アクセスキーの作成を実行すると、アクセスキーIDとシークレットアクセスキーが表示されるのでこれを使う。

aws-shellのインストール

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
sudo python get-pip.py
sudo pip install aws-shell


無料枠で使えないもの
無料枠のt2.microでは、インスタンスストア(Ephemeral Disk)は使えない
EFS(Elastic File Store)は、東京リージョンではサポートされてないので使えない

Ephemeral Disk

Ephemeral Disk

Ephemeral Disk

Ephemeral Disk

無料枠のEC2の使用例(2つと1つのボリュームでDOCKERを使う)

2017/11/01 3:53 に 森山誠二郎 が投稿

私は、ec2にubuntuを入れたanagix1と呼んでいるインスタンス(8G)とamzn linuxを入れたanagix3というインスタンス(10G)のほかに、workという10Gのボリュームを作り、通常はworkをanagix1にアタッチし、anagix3からNFSで/mnt/workにマウントしてます。/mnt/workの内容は以下のようになってます:
anagix_tools    --- /usr/local/anagix_toolsがシンボリックリンク
docker --- anagix1でdockerするときの /var/lib/docker
opt
chefdk --- ChefのDining Kichenです
vivaldi    --- 無視してください。1Gメモリでは重すぎる。
wine-stable --- ubuntuでソースから入れた???
ubuntu
chef-repo --- 使うときは、/home/ubuntu/chef-repoから
work ---これも使うときは、/home/ubuntu/work

そしてこれが大事なのですが、rootでdockerをインストールした後、
docker run  -it -v /mnt/work:/mnt/work -v /tmp:/tmp -e DISPLAY -e QT_X11_NO_MITSHM=1 -v /home/ubuntu/.Xauthority:/root/.Xauthority --net=host  ubuntu:latest /bin/bash
を実行し、dockerコンテナの中で、/mnt/work/setupという以下のスクリプトを
実行してます。QT_X11_NO_MITSHM=1 を指定しないと、qt4のアプリを動かしたとき、以下のエラーが出て、アプリ画面が正しく表示されません。
X Error: BadAccess (attempt to access private resource denied) 10

# to setup
apt-get update
apt-get install -y xauth
rmdir /opt
ln -s /mnt/work/opt /opt
ln -s /mnt/work/anagix_tools /usr/local/anagix_tools
useradd --uid 1000 -m ubuntu
useradd --uid 1001 -m anagix
# caution: root should set passwords later

ln -s /mnt/work/ubuntu/chef-repo /home/ubuntu/chef-repo
ln -s /mnt/work/ubuntu/work /home/ubuntu/work
# so that ubuntu can use DISPLAY
cp /root/.Xauthority /home/ubuntu/.Xauthority
chown ubuntu /home/ubuntu/.Xauthority

#
apt-get install -y x11-apps
usermod -G sudo anagix
usermod -G sudo ubuntu

apt-get install -y emacs
apt-get install -y libglu1-mesa # for glade
apt-get install -y build-essential
apt-get install -y git
apt-get install -y sudo

su -l ubuntu でubuntuになると XのDISPLAY変数と.Xauthorityが引き継がれているので、コンテナから普通にXを使えます。
ただし、qt4アプリの場合、-lしては何故かダメで、suだけにしてください。(←これハマります。)

EC2のインスタンスを作りなおすよりは、dockerコンテナを作り、スクリプトを
実行するだけですむので、DOCKERを使う方法は有効かと思います。

1-1 of 1