ログってなんぼ

日々のメモです

AWS:awscliでインスタンスタイプの変更をコマンドラインのみで行うメモ。

awscli:EC2インスタンスタイプを変更してみる | ログってなんぼ はてなブックマーク - awscli:EC2インスタンスタイプを変更してみる | ログってなんぼとほぼ同じなんですけど、操作対象のインスタンスを特定するところからコマンドラインで行うメモ。

たとえばPrivateIpAddressから探す

今回は、インスタンスタイプを変更したいインスタンスのプライベートIPがわかっているという前提でやってみます。

jq はてなブックマーク - jq

があればJSONを整形できるので色々捗ります。勿論ですが他の項目で探すこともできますが、jqの文法についての詳しいことは

jq Manual はてなブックマーク - jq Manual

を見ていただければと。

インスタンスIDと現在のインスタンスTYPEを調べる

返却されるJSONをPrivateIpAddressで絞り込んだ後、.InstanceIdと .InstanceTypeだけを表示させます

$ aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(.PrivateIpAddress == "192.168.xxx.xxx") | .InstanceId, .InstanceType'
"i-xxxxxx"
"m1.small"

止める→変更→起動

インスタンスIDがわかったのでさくさく進めていきます。

インスタンスを止める

$ aws ec2 stop-instances --instance-ids i-xxxxxx

STATUSを取得してみて、止まったのを確認したら・・・

$ aws ec2 describe-instance-status --instance-ids i-xxxxxx
{
    "InstanceStatuses": []
}

タイプを変更

$ aws ec2 modify-instance-attribute --instance-id i-xxxxxx --attribute instanceType --value m1.large
{
    "return": "true"
}

起動

$ aws ec2 start-instances --instance-ids i-xxxxxx
{
    "StartingInstances": [
        {
            "InstanceId": "i-xxxxxx",
            "CurrentState": {
                "Code": 0,
                "Name": "pending"
            },
            "PreviousState": {
                "Code": 80,
                "Name": "stopped"
            }
        }
    ]
}

取り敢えず手動で行うならこんな感じ、というメモでした。