メタラーまとんがハイソにやらかすようです

東大理系修士卒JTBCエンジニアのハイソサイエティ(上流階級)な日常

はじめてAWS CLIを使う。WSL2にインストールしてIAMユーザーを紐づける

ども!AWS認定ソリューションアーキテクトアソシエイトのまとんです。

今まで趣味や仕事でAWSを色々と使ってきましたが、いつもwebコンソールを使っていたため、まだAWS CLI (Command Line Interface)を使ったことがありませんでした。

そこで今回、プライベートで普段使いしているWindows10にAWS CLIをインストールし、使えるようにしてみました!

やりたいこと

AWS CLIWindowsマシンで使えるようにします。

とはいえ、Windowsコマンドラインを使うのは苦手なので、WSL2 (Ubuntu 20.04LTS)AWS CLIをインストールします。

2020年12月に購入したWindows10 HomeEditionにWSL2をインストールした際の記事はこちらです。

highso.hatenablog.com

また、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 cliAWSを操作するためには、「誰がコマンドを実行しているのか」を設定する必要があります。

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で遊んだ際に、オレゴンしか実装されていなかった事情があって、そのときからずっとオレゴンを使用しています。

highso.hatenablog.com

プロファイルの保存先

$ aws configureコマンドで設定した情報は、.aws/credentialsと.aws/configに保存されています。

機密性の高いアクセスキーIDとシークレットアクセスキーはcredentialsに、機密性の低いリージョンとフォーマット形式はconfigに書かれています。

設定を変えたい場合には、ここを直接書き換えればよいです。

また、デフォルトではなく、名前付きのプロファイルを作りたいときはオプションを付ければOKです。

$ aws configure --profile produser

動作テスト

先日、DynamoDBでテーブルを作っていたため、テーブル名を取得できるか確認してみました。

f:id:highso:20210206171740p:plain

$ aws dynamodb list-tables コマンドで、無事に先日作ったテーブル名「SellTimeRemainder」が表示されることが確認できました!

感想

AWSは2年前からちらほら使っていましたが、今回初めて、AWS CLIを使えるようになりました。

AWSの公式ドキュメントでは、ほとんどの操作について「webコンソールでの操作方法」と「CLIでのコマンド」の両方が解説されています。

しかし、中にはCLIコマンドしか実装されていないものがあったりしてCLIが使えないのは不便でした。

今後は、なんでもCLI経由で操作できるようになったので、自由度が上がって嬉しいです!

 

以上、メタラーまとんでした。

ではでは。

過去に作ったエンジニア作品

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com

highso.hatenablog.com