AWS CLIを使用するための初期設定

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSではコンソール上の操作だけでなく、AWS CLIを使用し、CUI上の操作が可能です。
また、いくつかの機能についてはコンソールでの操作が未対応のため、AWS CLIを利用する必要があります。
今回は、このAWS CLIをLinuxサーバで使用するための初期設定方法をご紹介致します。

■AWS CLIのインストール
下記手順にて、AWS CLIをサーバにインストールします。ちなみに、AWS環境にて作成したAmazon Linuxであれば、サーバ作成時にインストールされているため、下記作業は不要となります。

1.pipのインストールスクリプトをcurl経由にてダウンロードし、実行。

[root@test ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1488k  100 1488k    0     0  5367k      0 --:--:-- --:--:-- --:--:-- 5394k
[root@test ~]# python get-pip.py
Collecting pip
  Downloading pip-8.1.2-py2.py3-none-any.whl (1.2MB)
    100% |████████████████████████████████| 1.2MB 888kB/s
Collecting setuptools
  Downloading setuptools-24.0.3-py2.py3-none-any.whl (441kB)
    100% |████████████████████████████████| 450kB 2.1MB/s
Collecting wheel
  Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
    100% |████████████████████████████████| 71kB 8.8MB/s
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-8.1.2 setuptools-24.0.3 wheel-0.29.0

2.pipを使用し、AWS CLIをインストール

[root@test ~]# pip install awscli
  Downloading awscli-1.10.47-py2.py3-none-any.whl (970kB)
    100% |████████████████████████████████| 972kB 1.2MB/s
(中略)
Successfully installed awscli-1.10.47 botocore-1.4.37 colorama-0.3.7 docutils-0.12 futures-3.0.5 jmespath-0.9.0 pyasn1-0.1.9 python-dateutil-2.5.3 rsa-3.4.2 s3transfer-0.0.1

これにてインストールは完了です。下記コマンドにてバージョンを確認してみましょう

[root@test ~]# aws --version
aws-cli/1.10.47 Python/2.7.5 Linux/3.10.0-327.el7.x86_64 botocore/1.4.37

■AWS CLI用IAMユーザ作成
AWS CLIインストール後、下記コマンドにてインスタンス情報を取得するコマンドを実行しようとすると…

[root@test ~]# aws ec2 describe-instances
You must specify a region. You can also configure your region by running "aws configure".

初期設定が完了してないため、このようなエラーメッセージが表示されます。

aws configureというコマンドにて初期設定を行うのですが、その際にIAMユーザのAccess Key及び
Secret Access Keyが必要になります。既にAWS CLI操作権限のあるIAMユーザを作成していれば、
そのユーザのAccess Key及びSecret Access Keyを使用すれば可能ですが、なければIAMユーザの
作成が必要となります。

AWSコンソールよりIAM設定画面を開き、ユーザ⇒新規ユーザの作成を押下します。

新規ユーザ作成

下記のようにユーザ名を入力します。ここでは「aws-cli」と入力し、作成を押下します。

IAMユーザ 作成

ユーザが正常に作成されました。ここで認証情報がダウンロード可能となります。
Access Key及びSecret Access Keyはこの画面でのみ、取得出来るため、必ずメモや
ファイルを保存しておきましょう。

IAM アクセスキー及びシークレットキー

作成されたユーザを押下すると、ユーザ設定確認画面に移行します。
作成されたばかりだと、AWS CLIを使用する権限が与えられていないため、
ポリシーをアタッチする必要があります。

アクセス許可タブを選択し、ポリシーのアタッチを押下します。

ユーザ確認画面

アタッチするポリシーを選択します。ここでは「PowerUserAccess」を
アタッチします。

ポリシーアタッチ

アタッチ後、このような表示となっていれば完了です。

アタッチ後

これでAWS CLIを使用するためのIAMユーザ作成が完了しました。

■aws configure実行
aws configureを実行する準備が整いましたので、実行します。
各ユーザのホームディレクトリにて実行してください。

[root@test ~]# aws configure
AWS Access Key ID [None]:

実行すると上記のようにアクセスキー等を対話形式で問われます。
下記入力情報を入力してください。

AWS Access Key ID [None]: 先程作成したユーザのAccess Key
AWS Secret Access Key [None]: 先程作成したユーザのsecret Access Key
Default region name [None]: リージョンを選択します。東京の場合は「ap-northeast-1」となります。
Default output format [None]: jsonやtable等のコマンド出力結果の表示形式を指定します。ここではjsonを入力します。

下記が入力例となります。

[root@test ~]# aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]:json

aws configure実行後、「.aws」というディレクトリが作成されています。

[root@test ~]# ls -la
total 40
dr-xr-x---  4 root root 4096 Jul 14 08:43 .
dr-xr-xr-x 25 root root 4096 Jul 14 07:33 ..
drwxr-xr-x  2 root root 4096 Jul 14 08:43 .aws
-rw-r--r--  1 root root   18 Jan 15  2011 .bash_logout
-rw-r--r--  1 root root  176 Jan 15  2011 .bash_profile
-rw-r--r--  1 root root  176 Jan 15  2011 .bashrc
-rw-r--r--  1 root root  100 Jan 15  2011 .cshrc
drwx------  2 root root 4096 Jul 14 07:33 .ssh
-rw-r--r--  1 root root  129 Jan 15  2011 .tcshrc
-rw-------  1 root root  663 Jul 14 08:43 .viminfo

このディレクトリの中身を見てみると、下記のようなファイルが保存されています。

[root@test ~]# cd .aws/
[root@test .aws]# ls -la
total 16
drwxr-xr-x 2 root root 4096 Jul 14 08:46 .
dr-xr-x--- 4 root root 4096 Jul 14 08:46 ..
-rw------- 1 root root   48 Jul 14 08:46 config
-rw------- 1 root root  116 Jul 14 08:46 credentials

configには、先程入力したoutputやregionが記載されています。

[root@test .aws]# cat config
[default]
output = json
region = ap-northeast-1

credentialsには、先程入力した、access_key等が記載されています。

[root@test .aws]# cat credentials
[default]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

これでAWS CLIを使用する初期設定が完了しました。

■AWS CLI実行
先程失敗したインスタンス情報の取得コマンドを実施します。

[root@test ~]# [root@test .aws]# aws ec2 describe-instances
{
    "Reservations": [
        {
            "OwnerId": "XXXXXXXXXXX",
            "ReservationId": "XXXXXXXXXX",
            "Groups": [],
            "Instances": [
                {
                    "Monitoring": {
                        "State": "disabled"
                    },
                    "PublicDnsName": "",
                    "RootDeviceType": "ebs",
                    "State": {
                        "Code": 80,
                        "Name": "stopped"
                    },
                    "EbsOptimized": false,
                    "LaunchTime": "2016-07-13T05:12:31.000Z",
                    "PrivateIpAddress": "172.31.XX.XX",
                    "ProductCodes": [],
                    "VpcId": "vpc-XXXXXXXXX",
                    "StateTransitionReason": "User initiated (2016-07-13 09:11:24 GMT)",
                    "InstanceId": "i-XXXXXXXX",
                    "ImageId": "ami-XXXXXXXX",
                    "PrivateDnsName": "ip-172-31-XX-XX.ap-northeast-1.compute.internal",
                    "KeyName": "test.pem",
                    "SecurityGroups": [
                        {
                            "GroupName": "launch-wizard-1",
                            "GroupId": "sg-XXXXXXXXX"
                        }
                    ],
                    "ClientToken": "XXXXXXXXXXXXXXXXX",
                    "SubnetId": "subnet-XXXXXXXX",
                    "InstanceType": "t2.micro",
                    "NetworkInterfaces": [
                        {
                            "Status": "in-use",
                            "MacAddress": "XX:XX:XX:XX:XX:XX",
                            "SourceDestCheck": true,
                            "VpcId": "vpc-XXXXXXXX",
                            "Description": "Primary network interface",
                            "NetworkInterfaceId": "eni-XXXXXXXX",
                            "PrivateIpAddresses": [
                                {
                                    "PrivateDnsName": "ip-172-31-XX-XX.ap-northeast-1.compute.internal",
                                    "Primary": true,
                                    "PrivateIpAddress": "172.31.XX.XX"
                                }
                            ],
                            "PrivateDnsName": "ip-172-31-XX-XX.ap-northeast-1.compute.internal",
                            "Attachment": {
                                "Status": "attached",
                                "DeviceIndex": 0,
                                "DeleteOnTermination": true,
                                "AttachmentId": "eni-attach-XXXXXXXX",
                                "AttachTime": "2016-07-12T06:29:15.000Z"
                            },
                            "Groups": [
                                {
                                    "GroupName": "launch-wizard-1",
                                    "GroupId": "sg-XXXXXXXXX"
                                }
                            ],
                            "SubnetId": "subnet-XXXXXXXX",
                            "OwnerId": "XXXXXXXXXXXXXX",
                            "PrivateIpAddress": "172.31.XX.XX"
                        }
                    ],
                    "SourceDestCheck": true,
                    "Placement": {
                        "Tenancy": "default",
                        "GroupName": "",
                        "AvailabilityZone": "ap-northeast-1c"
                    },
                    "Hypervisor": "xen",
                    "BlockDeviceMappings": [
                        {
                            "DeviceName": "/dev/xvda",
                            "Ebs": {
                                "Status": "attached",
                                "DeleteOnTermination": true,
                                "VolumeId": "vol-XXXXXXXXX",
                                "AttachTime": "2016-07-12T06:29:15.000Z"
                            }
                        }
                    ],
                    "Architecture": "x86_64",
                    "StateReason": {
                        "Message": "Client.UserInitiatedShutdown: User initiated shutdown",
                        "Code": "Client.UserInitiatedShutdown"
                    },
                    "RootDeviceName": "/dev/xvda",
                    "VirtualizationType": "hvm",
                    "Tags": [
                        {
                            "Value": "XXXXXXXX",
                            "Key": "Name"
                        }
                    ],
                    "AmiLaunchIndex": 0
                }
            ]
        }
    ]
}

今度はうまく取得できましたね。インスタンスの状態やサイズ、EBSの情報等が取得できています。

■まとめ
AWS CLIを使用するには、下記が必要となります。
・AWS CLIのインストール
・AWS CLIの使用権限が付与されているIAMユーザ
・上記準備後、aws configureを実施

今回は以上となります。

投稿者プロフィール

yajima
未経験で中途入社でした文系エンジニア。
顔と年齢の差が激しいとよく言われます。

1 個のコメント

  • コメントを残す

    メールアドレスが公開されることはありません。

    Time limit is exhausted. Please reload CAPTCHA.