弱小インフラエンジニアでもAWS CLIを使えるようになりたい

#ご挨拶
今年に入り部署移動やら一人暮らしやらでばたばたしていてQiitaへの投稿がなかなかできない状況でしたが、知識がだいぶ溜まってきたのでアウトプットのために簡単な記事を書きます。
#AWS CLIを使ってみよう
###環境
Ubuntu 20.04
Python 3.8.5
※AWS CLIを使用するにはPython 2 バージョン 2.7以降のバージョンが入っている必要があります。

###AWS CLIバージョン2をインストールします。
公式ドキュメントどうりに進めていきます。
以下のコマンドを実行することで最新のバージョンをインストールできます。

```text:Ubuntu20.04
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
```
上記コマンドが正常に終了したらバージョンを確認しましょう

```text:Ubuntu20.04
aws --version
```
私の場合はaws-cli/2.1.30が入っていました。
次にAWSをコマンド操作できるようにIAMユーザを作成します。

###IAMユーザの作成 (AWSマネジメントコンソールでの操作)
※すでにIAMユーザが作成されている方はアクセスキーとシークレットアクセスキーを準備してください
AWSマネジメントコンソールで検索バーから「IAM」と検索しIAMダッシュボードへ移動
![iam.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/885ca492-ff89-d7e0-720a-dfd0e2c7bcb7.png)
移動後、画面左にある「ユーザ」をクリック
クリックすると以下の画面が出てくる
出てきたら「ユーザを追加」をクリック
※初めて作成する場合は画面が少し違う場合があります。
![iamユーザ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/c378c4cb-bb07-3476-dffc-c099ea42eada.png)
クリックしたらユーザ名を入力する画面が出てくるので入力する
ユーザ名を入力したらプログラムによるアクセスにチェックを入れて「次のステップ：アクセス権限」をクリック
![ユーザ名.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/844d67be-8a1c-4014-8ba7-39c07531994c.png)
「既存のポリシーを直接アタッチ」を選択して「AdministratorAccess」にチェックを入れます。
※本来は必要最低限のポリシーをアタッチするのが良いのですが今回はAWS CLIをとりあえず使ってみるためにAdministratorAccessをアタッチしています。
チェックを入れたら「次のステップ：タグ」をクリック
![ポリシー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/871f3b8c-037c-9d7d-ecc6-67b69fe6ea3e.png)
タグの入力画面が出てきますがここでは特に入力せずに「次のステップ：確認」をクリック
クリック後確認画面が出てくるので問題がなければ「ユーザの作成」をクリック
クリック後IAMユーザのアクセスキーとシークレットアクセスキーが出てくるのでメモしておきます。
※アクセスキーとシークレットアクセスキーは流出すると大変なので自分以外には教えないでください。
###AWS CLIの設定
ターミナルに戻ってAWS CLIの設定をしていきます。
まずは先ほどメモしたアクセスキーとシークレットアクセスキーを設定していきます。

```text:Ubuntu20.04
aws configure
```

上記のコマンドを実行するとアクセスキー、シークレットアクセスキー、デフォルトでリクエストを送るリージョン、出力形式が設定できます。

```text:Ubuntu20.04
AWS Access Key ID [None]: メモしたアクセスキーを入力
AWS Secret Access Key [None]: メモしたシークレットアクセスキーを入力
Default region name [None]: 使用したいリージョンを入力 東京リージョンならap-northeast-1
Default output format [None]: コマンドの結果の出力形式 (json、yaml、yaml-stream、text、table)から選べます
```

上記で設定した内容は~/.aws/配下にあるファイルで確認することができます。
次はデフォルトでは設定されていないTab補完の設定を行います。
下記のコマンドを実行してAWSコンプリータを探します。

```text:Ubuntu20.04
which aws_completer
```
正常に終了したら下記のコマンドでTab補完を有効化します。
※/usr/local/bin/のところは上記のコマンドの結果を入力してください

```text:Ubuntu20.04
complete -C '/usr/local/bin/aws_completer' aws
```
これだけでもTab補完を使用できるようになっていますが、このままだとシェルログイン時に毎回実行する必要があるので.bashrcに上記コマンドを記載しておきましょう。
これでAWS CLIを使用する準備は完了しました。次は実際に使用してみます。
###AWS CLIで作成済みのリソースを見てみる
とりあえずAWS CLIを使用する準備が完了したのでCLIで作成済みのEC2インスタンスを見てみましょう。
AWS CLIのコマンドの使用方法としては「aws サービス アクション オプション」といった形になっています。
以下のコマンドを実行してみてください。

```text:Ubuntu20.04
aws ec2 describe-instances
```
こちらのコマンドを実行すると作成されているEC2インスタンスの情報がずらっと出力されてきます。
すべてのインスタンスではなくフィルターに引っかかったインスタンスを出力するには以下のようになります。

```text:Ubutnu20.04
aws ec2 describe-instance --filters フィルターしたいもの
```
例えばイメージIDでフィルターをしたければ以下のようになります。

```text:Ubuntu20.04
aws ec2 describe-instance --filters Name=image-id,Values=ami-0bc8ae3ec8e338cbc
```
このように「--filters」の後にフィルターしたいものの名前と中身でフィルターが可能になっています。
他にもインスタンスタイプやキーペアなどでフィルターできるようです。
詳しくは[コマンドリファレンス](https://docs.aws.amazon.com/cli/latest/reference/index.html#cli-aws)を参照してみてください。
#締めのご挨拶
AWS CLI自体まだまだ勉強中で今回の記事のレベルのようなことでしか使用したことが無いですが、業務で使用できるレベルになるように頑張りたいと思います。