この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
以前、RasberryPi2を購入してSSH接続が出来るところまで設定して放置していました。
【開封の儀】待ちに待った愛しのRaspberry Pi 2の開封を執り行う
【Raspberry Pi 2】悪戦苦闘!トラップだらけのRasberry Pi 2の構築 其の1
【Raspberry Pi 2】悪戦苦闘!トラップだらけのRaspberry Pi 2の構築 其の2
squidでも使ってプロキシサーバに使おうと考えていたのですが、諸事情により不要になったのが放置の原因でした。
放置しているのもアレなので、と思いついたのが「RasberryPi2を使ってAWS管理サーバを作ろう」といったものになります。
現在は外からRaspberryPi2にssh接続出来る環境が整っていますので、スクリプト一発で起動環境を整えたり、時間が来たら起動・停止といった制御をしてみたいと思います。
あと、CRONに登録しておいて、特定の時間帯に起動・停止といった事もゆくゆくはして行きたいな、と考えてみたりしてます。
クリック可能な目次
今回やりたいこと
RaspberryPi2にawscliインストール
・pipのインストール
# easy_install-pypy pip
・awscliインストール
# /usr/lib/pypy-upstream/bin/pip install awscli
・awscli環境設定
さぁ、早速awscliの環境設定をっと。
# aws configure
-su: aws: コマンドが見つかりません
ん?、何故かコマンドパスが通っていないっぽい。
なのでコマンドパス登録
.bashrcに下記を追記
PATH=$PATH:/usr/lib/pypy-upstream/bin/aws
そして、
# . .bashrc
気を取り直して再度、
# aws configure
-su: aws: コマンドが見つかりません
んー、よく分からん。
とりあえずはエイリアスで逃げる事に。
.bashrcに下記を追記
alias aws=/usr/lib/pypy-upstream/bin/aws
そして、
# . .bashrc
# aws configure
AWS Access Key ID [None]: <アクセスキー>
AWS Secret Access Key [None]: <シークレットキー>
Default region name [None]: ap-northeast-1
Default output format [None]:
行けた。。。(あんまり良くないけど)
・コマンド動作確認
# aws ec2 describe-regions
{
"Regions": [
{
"Endpoint": "ec2.eu-central-1.amazonaws.com",
"RegionName": "eu-central-1"
},
{
"Endpoint": "ec2.sa-east-1.amazonaws.com",
"RegionName": "sa-east-1"
~以下、略~
うむ。いけてるっぽい。
では、以前のエントリで使ったスクリプトを参考に移植してみる。
powershellスクリプトを使ってEC2インスタンスをタグ名を指定して起動
#!/bin/bash
alias aws=/usr/lib/pypy-upstream/bin/aws
# 引数チェック1
if [ "$1" = "" ]; then
echo "引数がありません。"
exit
fi
# 引数チェック2
if [ "$2" = "" ]; then
echo "引数がありません。"
exit
fi
# 引数が有効なホスト名かチェック
echo "ホスト名[$1]の確認"
instanceid=$(aws ec2 describe-tags --filters "Name=tag:Name,Values=$1" "Name=resource-type,Values=instance" --query Tags[].ResourceId --output=text)
if [ "${instanceid}" = "" ]; then
echo "正しいホスト名を入力してください。"
exit 0
fi
# 起動
aws ec2 $2-instances --instance-ids ${instanceid}
# 起動確認
i=0
check_time=5
span=3
check_times=$(expr ${check_time} * 10)
while [ ${i} -lt ${check_times} ]
do
State=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=$1" --query Reservations[].Instances[].State[].Name --output=text)
if [ "${State}" = "running" -o "${State}" = "stopped" ]; then
break
else
echo "Waiting For Complete..."
sleep ${span}
i=$(expr ${i} + 1)
fi
done
前回のpowershellで作ったのをシェルスクリプトに置き換え、さらに引数で起動・停止が指定出来る様に改修を行いました。
・起動確認
# sh ec2-start.sh hoge start
ホスト名[hoge]の確認
{
"StartingInstances": [
{
"InstanceId": "i-35f8f72c",
"CurrentState": {
"Code": 0,
"Name": "pending"
},
"PreviousState": {
"Code": 80,
"Name": "stopped"
}
}
]
}
Waiting For Complete...
・停止確認
# sh ec2-start.sh hoge stop
ホスト名[hoge]の確認
{
"StoppingInstances": [
{
"InstanceId": "i-35f8f72c",
"CurrentState": {
"Code": 64,
"Name": "stopping"
},
"PreviousState": {
"Code": 16,
"Name": "running"
}
}
]
}
Waiting For Complete...
よし、何とか起動・停止ともに成功!
キチンと書いたコードでは無いのでエラーハンドリング等の見直しは必要ですが、とりあえず動く事は確認出来ました(汗)
今日はこの辺で終わりして、次回は「スマホからRaspberryPi2にSSHで接続して~」といったところを書きたいと思います。
それでは。