あいしんくいっと

ありきたりだけど、少しだけ役に立つことをありのままに書こうと思う。

【AWS】これさえあれば超快適!awscliを使って30秒でインスタンス起動!

time 2015/04/04

AWSは便利なのですが、良くも悪くも従量課金制なので使ったら使った分だけ課金が発生します。当然ですが。
ですので、使ったら必ずインスタンスを停止させなければなりません。

となると次に使う時は当然ですが、またインスタンスを起動させる必要があります。
環境によるのかも知れないですが、私の場合は以下のプロセスが必要になります。

1. AWSコンソールにログイン
2. インスタンスにEIPを付与
3. インスタンス起動

~用事が終わったら~

4. EIPデタッチ&リリース
5. AWSコンソールログアウト

といった感じで結構手間がかかってます。
そこで、自端末(Windows8)にawscliをぶち込んで直接インスタンスの起動・停止をしてみたいと思います。
タイトルでは30秒を謳っていますが、それに近い位は早くなると踏んでいます。
では実際にやってみたいと思います。

sponsored link

1. awscliのインストール

Windows8にawscliをインストールします。
下記のURLからダウンロードして下さい。
AWS コマンドラインインターフェイス

1. ダウンロード出来たら、「AWSCLI64.msi」を起動してインストールを開始します。
awscli-1

 

2. 「accept ~」にチェックを入れて「Next」を押下します。
awscli-2

 

3. 「Next」を押下して進めます。
(インストール場所を指定する場合は「Browse」で変更します)
awscli-4

 

「Install」を押下してインストールを行います。
awscli-5

 

4. インストールが完了したら、「Finish」を押下して終了させます。
awscli-6

 

 

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
それではまた!

sponsored link

down

コメントする





*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Author

あいしんくいっと

あいしんくいっと

あいしんくいっとの中の人。

ありきたりだけど、自分なりの視点で少しでも人の役に立つ記事をありのままに書くをモットーに。 たまには役立つことが書けると良いかな。

サイトポリシーはこちら

聞きたいことがあれば、気軽にツイートください♪可能な範囲でお答えします。
follow us in feedly

Twitter

オススメ記事

アーカイブ