developer's diary

最近はc#のエントリが多いです

mac環境にbrew installでawsコマンドラインツールをインストールしてスポットインスタンスをあれこれ

awsのアクセス証明書のページで秘密鍵と証明書を作成してダウンロードする

ダウンロードした秘密鍵と証明書を配置

mkdir ~/.ec2
mv ~/Downloads/cert-*.pem  ~/.ec2/
mv ~/Downloads/pk-*.pem  ~/.ec2/

brewでec2-api-toolsをインストール

brew install ec2-api-tools
------↓結果↓------
Software installed with other package managers causes known problems for
Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again.
==> Downloading http://ec2-downloads.s3.amazonaws.com/ec2-api-tools-1.6.6.0.zip
Already downloaded: /Library/Caches/Homebrew/ec2-api-tools-1.6.6.0.zip
==> Caveats
Before you can use these tools you must export some variables to your $SHELL
and download your X.509 certificate and private key from Amazon Web Services.

Your certificate and private key are available at:
http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key

Download two ".pem" files, one starting with `pk-`, and one starting with `cert-`.
You need to put both into a folder in your home directory, `~/.ec2`.

To export the needed variables, add them to your dotfiles.
 * On Bash, add them to `~/.bash_profile`.
 * On Zsh, add them to `~/.zprofile` instead.

export JAVA_HOME="$(/usr/libexec/java_home)"
export EC2_PRIVATE_KEY="$(/bin/ls "$HOME"/.ec2/pk-*.pem | /usr/bin/head -1)"
export EC2_CERT="$(/bin/ls "$HOME"/.ec2/cert-*.pem | /usr/bin/head -1)"
export EC2_HOME="/usr/local/Library/LinkedKegs/ec2-api-tools/jars"

install時に出力されるexportをbash_profileに記載

vi ~/.bash_profile
export JAVA_HOME="$(/usr/libexec/java_home)"
export EC2_PRIVATE_KEY="$(/bin/ls "$HOME"/.ec2/pk-*.pem | /usr/bin/head -1)"
export EC2_CERT="$(/bin/ls "$HOME"/.ec2/cert-*.pem | /usr/bin/head -1)"
export EC2_HOME="/usr/local/Library/LinkedKegs/ec2-api-tools/jars"
source ~/.bash_profile 

試しに、現在日付を開始日に指定してスポットインスタンスの価格確認をしてみる。

ec2dsph -t t1.micro -d Linux/UNIX --region us-east-1 -s `date +"%Y-%m-%dT00:00:00"`

次にVPCにスポットインスタンスをリクエストするコマンド

ec2-request-spot-instances ami-XXXXXXXX -t t1.micro -p .003 -n 1 -r one-time  -s  subnet-XXXXXXXX -k XXXXXXXXX -g sg-XXXXXXXX

パラメータはドキュメント参考でざっくりとした意味だけ書いてみます。

パラメータ 意味
t インスタンスタイプ
p 1時間あたりの価格
n 起動するインスタンスの数
r 1回のみならone-timeを利用
s vpcのサブネットを設定
k アクセス用のキーペア
sg セキュリティーグループのID

スポットインスタンスのステータス確認(awkで結果を変えてみてます。基本的には ec2dsirだけでOKだと思います)

ec2dsir | awk '{print $2"\t"$3}'

スポットインスタンスキャンセル(ec2csirを利用します。)

ec2csir sir-XXXXXXXX

起動はできました。このままだとEIP貼ってないので、この状態のままだと多分利用できません。 (すでにVPC内にアクセスできる状態にあるなら利用できます。)

追記: EIPの割当のエントリを書きました↓ awsコマンドラインツールで起動したスポットインスタンスにEIPを割り当てる(VPC環境)