この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
AWSは便利なのですが、良くも悪くも従量課金制なので使ったら使った分だけ課金が発生します。当然ですが。
ですので、使ったら必ずインスタンスを停止させなければなりません。
となると次に使う時は当然ですが、またインスタンスを起動させる必要があります。
環境によるのかも知れないですが、私の場合は以下のプロセスが必要になります。
1. AWSコンソールにログイン
2. インスタンスにEIPを付与
3. インスタンス起動
~用事が終わったら~
4. EIPデタッチ&リリース
5. AWSコンソールログアウト
といった感じで結構手間がかかってます。
そこで、自端末(Windows8)にawscliをぶち込んで直接インスタンスの起動・停止をしてみたいと思います。
タイトルでは30秒を謳っていますが、それに近い位は早くなると踏んでいます。
では実際にやってみたいと思います。
1. awscliのインストール
Windows8にawscliをインストールします。
下記のURLからダウンロードして下さい。
AWS コマンドラインインターフェイス
1. ダウンロード出来たら、「AWSCLI64.msi」を起動してインストールを開始します。
2. 「accept ~」にチェックを入れて「Next」を押下します。
3. 「Next」を押下して進めます。
(インストール場所を指定する場合は「Browse」で変更します)
4. インストールが完了したら、「Finish」を押下して終了させます。
2. awscli環境設定
5. インストールが完了したら、環境設定をして行きます。
awscliの利用にはIAMユーザのアクセスキーとシークレットキーが必要になります。
ここでは既にキーは発行済みの想定で話を進めますが、下記のURLでポリシーを検討すると良いと思います。
AWSポリシージェネレーター
簡単な例を挙げておきます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1428072129085",
"Action": "ec2:*",
"Effect": "Allow",
"Resource": "*"
}
]
}
取り敢えず上記のポリシーを付与しておけば今回の要件は満たせます。
ただ、キチンとしたい場合はもっと権限を絞る必要がありますが・・・。
6. 次にDOSプロンプトを起動し、取得したアクセスキーとシークレットキーを設定します。
>aws configure
AWS Access Key ID [None]: <アクセスキー>
AWS Secret Access Key [None]: <シークレットキー>
Default region name [None]: ap-northeast-1
Default output format [None]:
それでは下記のコマンドを実行し、awscliが使える事を確認します。
>aws ec2 describe-regions
{
"Regions": [
{
"Endpoint": "ec2.eu-central-1.amazonaws.com",
"RegionName": "eu-central-1"
},
~以下、略~
上記のようにリージョンが表示されれば、正常に使えています。
対象インスタンスの操作(起動、停止他)
では実際に対象インスタンスの起動を行いたいと思います。
まずはインスタンスIDを調べます。
予め、対象インスタンスには「hoges」というNameタグを付与しておきました。
>aws ec2 describe-tags --filters "Name=tag-key,Values=Name" "Nam
e=tag-value,Values=hoges" --query Tags[].ResourceId[] --output=text
i-xxxxxxxx
次に起動します。
>aws ec2 start-instances --instance-ids i-xxxxxxxx
{
"StartingInstances": [
{
"InstanceId": "i-xxxxxxxx",
"CurrentState": {
"Code": 0,
"Name": "pending"
},
"PreviousState": {
"Code": 80,
"Name": "stopped"
}
}
]
}
これでめでたく起動が出来ました。
では、続いてEIPを発行します。
>aws ec2 allocate-address
{
"PublicIp": "<EIP>",
"Domain": "vpc",
"AllocationId": "eipalloc-xxxxxx"
}aws ec2 allocate-address
そして発行したEIPをインスタンスに付与します。
>aws ec2 associate-address --instance-id i-xxxxxxxx --public-ip <EIP>
{
"AssociationId": "eipassoc-xxxxxx"
}
これでようやくEIPを指定してアクセスする事が可能になります。
そして停止する場合は下記のコマンドを実行します。
>aws ec2 stop-instances --instance-id i-xxxxxxxx
{
"StoppingInstances": [
{
"InstanceId": "i-xxxxxx",
"CurrentState": {
"Code": 64,
"Name": "stopping"
},
"PreviousState": {
"Code": 16,
"Name": "running"
}
}
]
}
そして最後に忘れずにEIPをデタッチ&リリースしておきます。
>aws ec2 disassociate-address --public-ip <EIP>
>aws ec2 describe-addresses
{
"Addresses": [
{
"PublicIp": "52.68.16.95",
"Domain": "vpc",
"AllocationId": "eipalloc-xxxxxx"
}
]
}
>aws ec2 release-address --allocation-id eipalloc-xxxxxx
>aws ec2 describe-addresses
{
"Addresses": []
}
まとめ
・インスタンスID確認
aws ec2 describe-tags –filters “Name=tag-key,Values=Name” “Name=tag-value,Values=<タグ名>” –query Tags[].ResourceId[] –output=text
・インスタンス起動
aws ec2 start-instances –instance-ids i-xxxxxxxx
・EIPの発行
aws ec2 allocate-address
・インスタンス停止
aws ec2 stop-instances –instance-id i-xxxxxxxx
・EIPデタッチ
aws ec2 disassociate-address –public-ip <EIP>
・EIPIDの確認
aws ec2 describe-addresses
・EIP解放
aws ec2 release-address –allocation-id eipalloc-xxxxxx
いかがだったでしょうか。
awscliコマンドさえインストールしてしまえば、AWSコンソールにログインすることなくインスタンス操作が可能になります。
しかも、未だにAWSコンソールでは出来ない操作もあったりしますので、awscliは覚えておいて損はないと思います。
コマンド一発で起動!だとタイトルで謳った30秒、何とか守れるような気がしていますw
それではまた!