コマンドラインでAWSのユーザを作成する

## 作成するユーザの情報

やり方を比べるために、GUIとCUIで同じことをします。

- GUIで作成
	- ユーザグループ : test-user-group01
	- ユーザ名 : test-user01
	- パスワード : test-user-pass-01
	- 新しいパスワード : test-user-pass-01-new
	- アタッチするロール : AmazonEC2ReadOnlyAccess
- CUIで作成
	- ユーザグループ : test-user-group02
	- ユーザ名 : test-user02
	- パスワード : test-user-pass-02
	- 新しいパスワード : test-user-pass-02-new
	- アタッチするロール : AmazonEC2ReadOnlyAccess

## 目次

- ユーザグループを作成
- ユーザを作成
- グループにポリシーをアタッチ
- ログイン


## ユーザグループを作成

### GUI

- ユーザグループを作成

![1IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/e48ada87-3c46-3086-e85f-6eb2f86fbced.png)


- ユーザグループ名を指定

![2IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/9a613642-9cee-e062-2968-f7e24d18fe0b.png)


- ユーザグループの作成完了

![3IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/5e6b1910-2571-e225-03de-718deac4fc74.png)


### CUI

- ユーザグループを作成

```
aws iam create-group --group-name test-user-group02
```

```
{
    "Group": {
        "Path": "/",
        "GroupName": "test-user-group02",
        "GroupId": "XXXXXXXXXXXXXXXXXXXX",
        "Arn": "arn:aws:iam::XXXXXXXXXXXX:group/test-user-group02",
        "CreateDate": "2021-07-05T11:33:18+00:00"
    }
}
```

- ユーザグループ作成完了

![4IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/a8f7ac8a-00e1-3bd9-7561-457d78074ee6.png)


## ユーザを作成

### GUI

- ユーザを作成

![5IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/21b10af0-e10e-1dea-df9b-6977b5f244dd.png)


- ユーザの詳細

![6IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/1938b887-961d-06c7-26c9-a88563963dd8.png)



- グループに追加

![7IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/321852cd-3f3f-1a6f-a619-7e4c099b974d.png)


- タグ

タグはなし

![8IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/511e0edc-929c-f913-ccb2-74f1cf1d67b0.png)


- 最終確認

![9IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/29528890-113f-e47c-13f3-83f3f0b8dc1d.png)


- ユーザ作成完了

![10IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/10bda11d-c408-92b9-4950-0eaa8db01763.png)


![11IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/201ff9cb-d9f1-8307-5eb6-ad6909929e37.png)


### CUI

- ユーザを作成

```
aws iam create-user --user-name test-user02
```

```
{
    "User": {
        "Path": "/",
        "UserName": "test-user02",
        "UserId": "XXXXXXXXXXXXXXXXXXX",
        "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/test-user02",
        "CreateDate": "2021-07-05T11:47:34+00:00"
    }
}
```

- グループに追加

```
aws iam add-user-to-group --user-name test-user02 --group-name test-user-group02
```

- ログイン情報の追加

`--user-name` ユーザ名
`--password` パスワード
`--password-reset-required` パスワードのリセットが必要

```
aws iam create-login-profile --user-name test-user02 --password test-user-pass-02 --password-reset-required
```

```
{
    "LoginProfile": {
        "UserName": "test-user02",
        "CreateDate": "2021-07-05T12:02:54+00:00",
        "PasswordResetRequired": true
    }
}
```

- ユーザに直接 IAMUserChangePassword をアタッチ

IAMUserChangePassword を追加しないと、ログイン後にパスワードが変更できず、以下のようなエラーになります。

![22Amazon Web Services Sign-In - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/57ef9782-c7d2-04ca-48e5-1aa4da0617f6.png)


```
aws iam attach-user-policy --user-name test-user02 --policy-arn arn:aws:iam::aws:policy/IAMUserChangePassword
```

- アクセスキーとシークレットキーの作成

```
aws iam create-access-key --user-name test-user02
```

```
{
    "AccessKey": {
        "UserName": "test-user02",
        "AccessKeyId": "アクセスキー",
        "Status": "Active",
        "SecretAccessKey": "シークレットキー",
        "CreateDate": "2021-07-05T12:05:08+00:00"
    }
}
```

## グループにポリシーをアタッチ

### GUI

- ユーザグループの編集

![12IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/2c836793-a16f-91ef-e0b3-50767bea2cf4.png)

- ポリシーをアタッチ

![13IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/d4d74409-2322-34f7-0881-399a5868f937.png)


![14IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/db828ad1-49c2-c434-2342-4a71d6872ac9.png)


- アタッチ完了

![15IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/87bf4445-7eaa-1127-25a6-78b3fe622e4e.png)

### CUI

- ポリシーをアタッチ

`AmazonEC2ReadOnlyAccess` のARNは `arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess` です

```
aws iam attach-group-policy --group-name test-user-group02 --policy-arn arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess
```

- アタッチ完了

![16IAM Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/a02642a5-70d9-2540-b96f-3fe4df042cba.png)

## ログイン

### test-user01(GUIで作成した方)

- ログイン画面

![17Amazon Web Services Sign-In - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/6d8daa1d-6117-ef82-ec87-c2bcda31ac55.png)


- パスワード変更画面

![18Amazon Web Services Sign-In - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/e5d36b35-a8c5-e6e1-4866-81587fc90de5.png)


- ログイン完了

![19インスタンス _ EC2 Management Console - Google Chrome 20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/68a69172-50fe-226c-711a-356ce468b8cb.png)


### test-user02(CLIで作成したほう)

- ログイン画面

![20Amazon Web Services Sign-In - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/a9beb098-e7e6-1917-7e3a-d6ce4787233f.png)


- パスワード変更画面

![21Amazon Web Services Sign-In - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/33df0cb5-e259-a2fd-9321-6af0a779e918.png)


- ログイン完了

![23AWS Management Console - Google Chrome 2021-07-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/81a04aa8-efa5-59c7-67e5-77785ccccb72.png)

## 削除

削除の際は以下を削除する

- IAM > ユーザ > test-user01
- IAM > ユーザ > test-user02

## 勉強後イメージ

ほぼ初めてIAMをcliで作ってみたけど、見比べながらしてたらそんなに難しくはないかも。
ただ、GUIからだと IAMUserChangePassword は自動的に付与してくれるけど、 CLIはそんなことないから躓きそうだなーって感じ。

## 参考

- [IAM ユーザーとグループの作成](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-iam-new-user-group.html)
- [IAM ユーザーの初期パスワードの設定](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-iam-set-pw.html)
- [AWS CLI でIAMユーザーとポリシー作成してみた](https://recipe.kc-cloud.jp/archives/8815)