【初心者用】CentosイメージにAWSCLI導入してインスタンスをコマンド作成

#初めに

今回はタイトルの通りCentosイメージにAWSCLI導入してインスタンスをコマンド作成するまでをやります。実際にAWSでインスタンスを作るうえではこちらの方が圧倒的に楽です。熟練の人たちは知ってて当たり前ですが、知らない人もいると思い記事にしました

#準備するもの
・AWSアカウント
・AWSEC2
　・インターネットに出れること

##インスタンスにAWSCLIを導入し使えるようにするまで

　AWSはCLIを使用することでコマンドからも管理が可能になります。簡単な利用であればGUIでも十分対応できますが100台のインスタンスを構築する必要がある時などはGUIでカチカチやるのは手間になります。その時はコマンドを使って一斉に作成します

###【手順1】インスタンスへログインする
1)AWSCLIを導入するインスタンスへログインする
　参照：[【超初心者用AWS構築】](https://qiita.com/yo_dazy/private/3846915e4db21fe04537)の【手順9】インスタンスへのログイン

###【手順2】AWSCLIを導入する
1)以下のコマンドを実行し[AWSCLI]が入っていないことを確認する
※AWSドキュメントではPIPからのインストールが記載されていますが初心者用とということでよりコマンド実行回数が少ない方法を選択しています

```
$ aws
```
```ruby:実行結果
[centos@ip-xx-xx-xx-xx ~]$ aws
-bash: /usr/bin/aws: No such file or directory
[centos@ip-xx-xx-xx-xx ~]$
```
↑上記の通りエラーが履かれておりコマンドが実行できません

2)以下のコマンドを実行し[AWSCLI]を導入する

```
$ sudo yum -y install awscli
※[-y]を付与することで途中のYes Or Noの判断を強制的にYesにします
```
```ruby:実行結果
[centos@ip-xx-xx-xx-xx ~]$ sudo yum -y install awscli
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.jaleco.com
 * extras: mirror.genesishosting.com
 * updates: mirror.genesishosting.com
Resolving Dependencies
--> Running transaction check
---> Package awscli.noarch 0:1.14.28-5.el7_5.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package        Arch           Version                    Repository       Size
================================================================================
Installing:
 awscli         noarch         1.14.28-5.el7_5.1          updates         1.0 M

Transaction Summary
================================================================================
Install  1 Package

Total download size: 1.0 M
Installed size: 3.7 M
Downloading packages:
awscli-1.14.28-5.el7_5.1.noarch.rpm                        | 1.0 MB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : awscli-1.14.28-5.el7_5.1.noarch                              1/1
  Verifying  : awscli-1.14.28-5.el7_5.1.noarch                              1/1

Installed:
  awscli.noarch 0:1.14.28-5.el7_5.1

Complete!
[centos@ip-xx-xx-xx-xx ~]$
```

3)以下のコマンドを実行し[AWSCLI]が導入されたことを確認する

```
$ aws
```
```ruby:実行結果
[centos@ip-xx-xx-xx-xx ~]$ aws
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help
aws: error: too few arguments
[centos@ip-xx-xx-xx-xx ~]$
```
手順[1)]の時と実行後の表示が変わりコマンドが実行されていることが確認できます

また【【手順3】AWSCLIを使用したインスタンス作成】を続けて行う場合はインスタンスにログインしたままにします

###【手順3】AWSCLIの使用準備
　[AWSCLI]を使用するためには[どのユーザが使うのか]をインスタンスに教えなければなりません。そこでIAMを使用して実行しているアカウントの認証情報を調べてインスタンスに読み込ませます。こうすることでAWSCLIのコマンドを特定のアカウントで使用可能になります。
　また今回の目的は事前に作成したインスタンスを基にAWSCLIによりコマンドで2台目のインスタンスを作成するになりますので1台目のインスタンスの情報をこのタイミングで一部取得します。

1)　AmazonWEBから[EC2]サービスを選択する
2)　[n個の実行中のインスタンス]をクリックする
3)　下図赤枠から作成したインスタンス(work-01)のインスタンスIDとリージョンを取得する

リージョン　：　オハイオ
インスタンスID：　i-067efae2040cea8dc

<img width="957" alt="01.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/c7b2483b-58c7-c2b1-a5fc-3e7668c13a1c.png">

4) 取得したリージョンのコードを確認する
※コードの確認はAmazonドキュメントから確認する

5) サービスを選択し"IAM"とコメント欄に入力する

<img width="564" alt="02.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/f8a4fb44-be2e-24a6-82b5-50f2e91d9ad4.png">

6) IAM画面より[ユーザ]を選択し[自分のAWSアカウント]を選択する
7) [認証情報]のタブに移動し、[アクセスキーの作成]をクリックする
<img width="960" alt="03.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/c8f7c8ad-c980-cf74-7523-c6b5a0c29868.png">

8)　[シークレットアクセスキー]の[表示]をクリックして以下二つの情報を控えておく
　・アクセスキーID
　・シークレットアクセスキー
注意：本手順で参照する情報はのちに確認することが出来ないため確実に控えておくこと（CSVのダウンロードでもよい）

<img width="517" alt="04.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/79503485-a5d8-aa70-51fb-0be92b0debfa.png">

9)　インスタンス上で以下のコマンドを実行しインスタンスに認証情報を読み込ませる

```
$ aws configure
```

実行結果の指示に従い、以下の情報を入力する
AWS Access Key ID [None]: [アクセスキーID]（手入力）
AWS Secret Access Key [None]: [シークレットアクセスキー]（手入力）
Default region name [None]: [リージョンのコード]（手入力）
Default output format [None]:（何も入力しないでEnter）

```ruby:実行結果
[centos@ip-172-31-28-152 ~]$ aws configure
AWS Access Key ID [None]: xxxxxxxxx
AWS Secret Access Key [None]: aaaaaaaaaaaaa
Default region name [None]: us-east-2
Default output format [None]:
[centos@ip-172-31-28-152 ~]$
```

###【手順4】AWSCLIの使用してインスタンス（2台目）の作成
　いよいよコマンドを用いてインスタンスを作成します。やり方は1台目の情報を取得し、コマンドラインにオプション追加して実行するだけとなります。

1)　以下コマンドを実行しインスタンス（1台目）の以下の情報を取得する

```
$ aws ec2 describe-instances --instance-ids i-067efae2040cea8dc
※i-067efae2040cea8dcは手順[3)]で取得したインスタンスIDになります
```

取得するインスタンスの情報を控えておく
・ImageId　（ami-9c0638f9）
・KeyName　（workkey）
・SecurityGroups:GroupName　（working-sg）
・InstanceType　（t2.micro）


```ruby:実行結果
[centos@ip-xx-xx-xx-xx ~]$ aws ec2 describe-instances --instance-ids i-067efae2040cea8dc
{
    "Reservations": [
        {
            "Instances": [
        <特定情報の為割愛>
                    "InstanceId": "i-067efae2040cea8dc",
        <特定情報の為割愛>
                    "ImageId": "ami-9c0638f9",
        <特定情報の為割愛>
                    "KeyName": "workkey",
                    "SecurityGroups": [
                        {
                            "GroupName": "working-sg",
        <特定情報の為割愛>
                        }
        <特定情報の為割愛>
                    "InstanceType": "t2.micro",
        <特定情報の為割愛>
}
[centos@ip-xx-xx-xx-xx ~]$
```

2)　以下コマンドを実行しインスタンス（2台目）を作成する

```
$ aws ec2 run-instances --image-id [ImageId] --region [リージョンコード] --key-name [KeyName] --security-groups [SecurityGroups:GroupName] --instance-type [InstanceType]
※[]の値は取得した値に変更する事
```
```ruby:実行結果
[centos@ip-xx-xx-xx-xx ~]$ aws ec2 run-instances --image-id ami-9c0638f9 --region us-east-2 --key-name workkey --security-groups working-sg --instance-type t2.micro
{
    "Instances": [
        <特定情報の為割愛>
}
[centos@ip-xx-xx-xx-xx ~]$
```

3) AmazonWebでインスタンスが作成されていることを確認する

<img width="690" alt="05.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/c8a8b41c-5c91-0128-1810-81c4f79e4265.png">

#終わりに

今回はAWSCLIを使用してインスタンスの作成をやりましたがAWSCLIはAWSにまつわる作業がほとんどできます。当然インスタンスの削除も設定変更も可能となります。今回は1台だけの作成ですがShell等でCSVを読み込ませて一斉に作るなども可能です。ぜひこれを機会にやってみることをお勧めします