ども!AWS認定ソリューションアーキテクトアソシエイトのまとんです。
今まで趣味や仕事でAWSを色々と使ってきましたが、いつもwebコンソールを使っていたため、まだAWS CLI (Command Line Interface)を使ったことがありませんでした。
そこで今回、プライベートで普段使いしているWindows10にAWS CLIをインストールし、使えるようにしてみました!
やりたいこと
とはいえ、Windowsでコマンドラインを使うのは苦手なので、WSL2 (Ubuntu 20.04LTS)にAWS CLIをインストールします。
2020年12月に購入したWindows10 HomeEditionにWSL2をインストールした際の記事はこちらです。
また、AWS CLIコマンドを実行する権限を付与する必要があります。
AWS CLIの権限は、IAMユーザーに権限付与し、そのIAMユーザーのプロファイルをローカルに保持することで設定します。
今回、IAMユーザーの作成も行いました。
環境
・Windows10 Home Edition
・WSL2 (Ubuntu20.04LTS)
手順
WSL2にAWS CLIをインストール
公式サイトの手順通りに進めます。
Linux での AWS CLI バージョン 2 のインストール、更新、アンインストール - AWS Command Line Interface
WSL2のターミナルを開き、curlコマンドでzipをダウンロードし、unzipコマンドで解凍します
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
上記コマンドを実行すると、実行ディレクトリにawsディレクトリが作成されます。
Ubuntu20.04LTSには、unzipコマンドは最初から入っていました。
$ sudo ./aws/install
上記コマンドでインストールが完了します。インストールにはWSL2のユーザーアカウントのパスワードが必要です。
WSL2インストール時に特に設定していなければ、Windowsのログインパスワードと同じです。
$ aws --version
aws-cli/2.1.24 Python/3.7.3 Linux/4.19.128-microsoft-standard exe/x86_64.ubuntu.20 prompt/off
aws --versionコマンドで、aws-cli/2.1.24がインストールされたことが確認できました。
IAMユーザーを作成
さて、aws cliでAWSを操作するためには、「誰がコマンドを実行しているのか」を設定する必要があります。
webコンソールで操作する場合には、rootユーザーなりIAMユーザーなりのID/PWで認証しています。
AWS CLIの場合には、IAMユーザーのアクセスキーIDとシークレットアクセスキーを発行し、それらをローカルにプロファイルとして保存しておくことで認証します。
今回は、ルートユーザーとほぼ同等の権限をもつIAMユーザーを作成し、aws cliにプロファイルを設定することにします。
今回は、Administratorアクセスを持つグループを作り、そこに新規ユーザーを登録する形にします。
まず、AWS webコンソールにログインします。
僕はルートユーザーしか作っていなかったので、ルートユーザーでログインしました。(ルートユーザーを日常使いするのはベストプラクティス上は望ましくありません)
IAMを開き、まずIAMグループを作ります。
- グループ作成
- グループ名:Administrator
- ポリシーのアタッチ:AdministratorAccess
「AdministratorAccess」は、ルートユーザーとほぼ同等の権限を持つ”最強の権限”です。(支払い情報、AWSアカウントの削除などはできない)
次に、IAMユーザーを作ります。
- ユーザー作成
- ユーザー名:AdministratorUser
- プログラムによるアクセス:チェック(CLI使用するため。アクセスキーIDとシークレットアクセスキーが有効になる
- AWSマネジメントコンソールへのアクセス:チェック
- コンソールのパスワード:カスタムパスワード(好きなパスワードを設定)
- パスワードのリセットが必要:チェックはずす
- グループ:Administrator
ユーザー作成が完了した画面で、アクセスキーIDとシークレットアクセスキーが発行されるため、コピーしておきます。
ユーザー作成完了画面を閉じると、再び入手することはできなくなるので注意です。
コピーを忘れた人は、再度新しくアクセスキーIDを発行するとよいです。
以上の手順で、ルートユーザーとほぼ同等の権限をもつIAMユーザー「AdministratorUser」が作成できました。
今後はAWS webコンソールにログインする際も、このユーザーを使おうと思います。
configureコマンドで設定ファイルと認証情報を一括で設定
WSL2のコマンドラインで、プロファイルを一括設定するコマンドを実行します。
$ aws configure
AWS Access Key ID [None]: <コピーしたアクセスキーID>
AWS Secret Access Key [None]: <コピーしたシークレットアクセスキー>
Default region name [None]: us-west-2
Default output format [None]: json
これで、aws cliでデフォルトで使用されるプロファイルとして、先ほど作成したIAMユーザーが使用されることになりました。
なお、デフォルトのリージョンはus-west-2(オレゴン)を使用しました。
僕は以前にAWS IoT 1-clickで遊んだ際に、オレゴンしか実装されていなかった事情があって、そのときからずっとオレゴンを使用しています。
プロファイルの保存先
$ aws configureコマンドで設定した情報は、.aws/credentialsと.aws/configに保存されています。
機密性の高いアクセスキーIDとシークレットアクセスキーはcredentialsに、機密性の低いリージョンとフォーマット形式はconfigに書かれています。
設定を変えたい場合には、ここを直接書き換えればよいです。
また、デフォルトではなく、名前付きのプロファイルを作りたいときはオプションを付ければOKです。
$ aws configure --profile produser
動作テスト
先日、DynamoDBでテーブルを作っていたため、テーブル名を取得できるか確認してみました。
$ aws dynamodb list-tables コマンドで、無事に先日作ったテーブル名「SellTimeRemainder」が表示されることが確認できました!
感想
AWSは2年前からちらほら使っていましたが、今回初めて、AWS CLIを使えるようになりました。
AWSの公式ドキュメントでは、ほとんどの操作について「webコンソールでの操作方法」と「CLIでのコマンド」の両方が解説されています。
しかし、中にはCLIコマンドしか実装されていないものがあったりして、CLIが使えないのは不便でした。
今後は、なんでもCLI経由で操作できるようになったので、自由度が上がって嬉しいです!
以上、メタラーまとんでした。
ではでは。