awsコマンドを実行する

ROSAをデプロイする手順の中でawsコマンドを実行する必要がありました。しかし、AWS CLIをインストールしただけの状態では、実行が失敗してしまいました。awsコマンドを実行するために必要な設定の記録です。

## AWS CLIのインストール
[AWS CLI のインストールと更新の手順](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html#cliv2-linux-install)の手順にしたがって行います。
```
# curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 55.4M  100 55.4M    0     0  69.9M      0 --:--:-- --:--:-- --:--:-- 69.8M
# unzip awscliv2.zip
Archive:  awscliv2.zip
   creating: aws/
   creating: aws/dist/
  inflating: aws/THIRD_PARTY_LICENSES
  inflating: aws/README.md
  inflating: aws/install
   creating: aws/dist/awscli/
   :

# sudo ./aws/install
You can now run: /usr/local/bin/aws --version
# /usr/local/bin/aws --version
aws-cli/2.13.1 Python/3.11.4 Linux/4.18.0-372.9.1.el8.x86_64 exe/x86_64.rhel.8 prompt/off
  ```

#### 参考: credential設定前のawsコマンド実行例 (失敗例)

インストール直後、awsコマンドを実行するとcredentialが設定されていないため、失敗してしまいます。

```
# aws iam get-role --role-name "AWSServiceRoleForElasticLoadBalancing"

Unable to locate credentials. You can configure credentials by running "aws configure".
```

## credentialの設定

メッセージにしたがって、`aws configure`コマンドでcredentialを設定してみます。

aws configure実行例：
```
# aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXX
AWS Secret Access Key [None]: xxxxxxx
Default region name [us-west-2]: ap-northeast-1
Default output format [None]:
```

ここで入力する値（アクセスキーとシークレットアクセスキー）は、AWSコンソールのIAMメニューで取得します。アクセスキー作成の手順例はこの後に掲載してあります。

参照：[AWS CLI をセットアップする - プログラムによるアクセス用の認証情報を収集する](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-quickstart.html)

::: note info
今回はテスト環境のため、`非推奨`ですがセットアップが容易な[IAM ユーザー認証情報を使用して認証を行う](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-authentication-user.html)でセットアップしています。
:::

参考：
`aws configure`を実行すると、HOMEディレクトリーの`.aws`ディレクトリー下に次のファイルが作られ、`credentialsファイル`にアクセスキー情報が、`configファイル`にリージョン情報が保存されます。
```
# ls -l $HOME/.aws
-rw-------. 1 root root  34  8月 21 19:29 config
-rw-------. 1 root root 116  8月 21 19:29 credentials
```


## ユーザーのアクセスキーの作成

以下の手順で`アクセスキー`を作成します。

1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

2. IAM コンソールのナビゲーションペインで [ユーザー] を選択し、アクセス設定を行いたいユーザー名を選択します。
2. ユーザーのページで、[セキュリティ認証情報] ページを選択します。次に、[アクセスキー] で`アクセスキーの作成` をクリックします。
![iam1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/11c76487-cb42-df8f-28de-be85e4ddfde1.png)
4. [アクセスキーの作成ステップ 1] 画面で、`コマンドラインインターフェイス (CLI)`を選択します。![iam3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/5edeb36b-7148-dd78-917c-e99bae17ac1f.png)

5. [アクセスキーの作成ステップ 2] 画面で、オプションのタグを入力して `次へ` をクリックします。
![iam4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/1c57f581-d7c7-69cc-83bc-dce947623975.png)
日本語のタグ名は使用できないようでしたので、英語名で入力し直しました。
![iam5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/498c0d65-428f-bf6d-21a5-568faf10c38b.png)
6. [アクセスキーの作成ステップ 3] 画面で、`.csv ファイルをダウンロード` をクリックし、IAM ユーザーのアクセスキーとシークレットアクセスキーを含む .csv ファイルを保存します。この情報が `aws configure`で入力するものです。`完了` を選択します。![iam7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/350a9930-1794-49df-f223-5d32275b6d13.png)

#### 参考: credential設定後のawsコマンド実行例
`aws configure`でcredentialを設定後、コマンドを実行できるようになりました。

```
# aws iam get-role --role-name "AWSServiceRoleForElasticLoadBalancing"
{
    "Role": {
        "Path": "/aws-service-role/elasticloadbalancing.amazonaws.com/",
        "RoleName": "AWSServiceRoleForElasticLoadBalancing",
（以降省略）
```

## 認証情報を収集する他のオプション

AWS Management Console の外部で AWS を操作するには、プログラムによるアクセスが必要です。認証と認証情報の説明については、[AWS CLI をセットアップする - プログラムによるアクセス用の認証情報を収集する](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-quickstart.html)にリストされたいずれかのオプションを選択します。

今回はテスト環境のため、この中から`非推奨`ですが、セットアップが容易な[IAM ユーザー認証情報を使用して認証を行う](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-authentication-user.html)でセットアップしました。

## 参考

https://aws.amazon.com/jp/cli/