AWS CLIを使ってIAMユーザとIAMグループを作成する

# AWS CLIでIAMユーザとグループをシンプルに作成する

- AWS公式に載っているようなシンプルなコマンドを使って、初心者でも簡単にIAMユーザ、IAMグループを作成していきます。
- 業務でIAMユーザーの作成が必要になったのですが、調べても小難しい技がくっついているような記事が出てきてしまい「良く分からない」となってしまったので、初心者でもわかるような感じで書きたいと思います。（自分も初心者）
- AWS CLIの設定などは済んでいることを前提としています。

## まずはIAMグループを作成

`Test-IamGroup`の部分には設定したいグループ名を入れてください。

```
$ aws iam create-group --group-name Test-IamGroup

{
    "Group": {
        "Path": "/",
        "GroupName": "Test-IamGroup",
        "GroupId": "**************",
        "Arn": "arn:aws:iam::000000000000:group/Test-IamGroup",
        "CreateDate": "2024-05-12T00:55:24+00:00"
    }
}
```

## IAMユーザを作成します
同じく`TestUser`には作成したいユーザー名を設定してください

```
$ aws iam create-user --user-name TestUser

{
    "User": {
        "Path": "/",
        "UserName": "TestUser",
        "UserId": "********************",
        "Arn": "arn:aws:iam::000000000000:user/TestUser",
        "CreateDate": "2024-05-12T00:59:18+00:00"
    }
}
```

## 先に作ったIAMグループにユーザーをイン

```
$ aws iam add-user-to-group --user-name TestUser --group-name Test-IamGroup
```

## 作成したIAMグループを確認します
- インしたTestUserが入っていることが確認出来ます

```
$ aws iam get-group --group-name Test-IamGroup

{
    "Users": [
        {
            "Path": "/",
            "UserName": "TestUser",
            "UserId": "********************",
            "Arn": "arn:aws:iam::000000000000:user/TestUser",
            "CreateDate": "2024-05-12T00:59:18+00:00"
        }
    ],
    "Group": {
        "Path": "/",
        "GroupName": "Test-IamGroup",
        "GroupId": "********************",
        "Arn": "arn:aws:iam::000000000000:group/Test-IamGroup",
        "CreateDate": "2024-05-12T00:55:24+00:00"
    }
}
```

## IAMグループにReadOnlyポリシーをアタッチする
- テスト用なのでReadOnlyのみのポリシーをアタッチします。
```
$ aws iam attach-group-policy --group-name Test-IamGroup --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess
```

- グループにアタッチされたポリシーを確認します。
- 無事にReadOnlyAccessがアタッチされています。

```
$ aws iam list-attached-group-policies --group-name Test-IamGroup

{
    "AttachedPolicies": [
        {
            "PolicyName": "ReadOnlyAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/ReadOnlyAccess"
        }
    ]
}

```

## IAMユーザにReadOnlyポリシーをアタッチする

- グループに設定するつもりだったのに間違えて設定してしまいました。
- 通常はグループに設定すれば、ユーザーにはポリシーは不要です（例外はあります）。
- 下記はIAMユーザーにポリシーをアタッチする場合の方法ということで。。

```
$ aws iam attach-user-policy --user-name TestUser --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess
```

- アタッチしたポリシーを確認します。
```
$ aws iam list-attached-user-policies --user-name TestUser
{
    "AttachedPolicies": [
        {
            "PolicyName": "ReadOnlyAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/ReadOnlyAccess"
        }
    ]
}
```



## IAMユーザに初期パスワードを設定

`--password-reset-required`　を設定することで、初回ログイン時にパスワードのリセットが必須になります。
- 公式では設定するパスワードに`!`が使用されているのですが、私の方でCLIで設定しようとするとエラーになってしまいました。bashの関係なのかもしれませんが、ご注意ください。

```
$ aws iam create-login-profile --user-name TestUser --password My-LoginPassword00 --password-reset-required

{
    "LoginProfile": {
        "UserName": "TestUser",
        "CreateDate": "2024-05-12T00:22:34+00:00",
        "PasswordResetRequired": true
    }
}
```


## アクセスキーとシークレットアクセスキーを払い出し
- 必要に応じて、アクセスキーとシークレットアクセスキーの払い出しを行ってください。

```
$ aws iam create-access-key --user-name TestUser

{
    "AccessKey": {
        "UserName": "TestUser",
        "AccessKeyId": "********************",
        "Status": "Active",
        "SecretAccessKey": "********************",
        "CreateDate": "2024-05-12T00:28:35+00:00"
    }
}
```

## 最後に

- パスワード設定のところで!が使えずエラーになってしまったので、そこで少しだけ躓きましたが、思っていたよりもだいぶシンプルに、CLIからユーザ作成、グループ作成等が行えました。
- まだまだ勉強が必要ですが、慣れてくるとやはりコンソールから操作するよりもCLI操作の方が楽になってくるのかな、というイメージが湧きました。
- もし上記に間違いございましたらご指摘くださいますと幸いです。



### 参考にしたページ
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-iam-new-user-group.html

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-iam-policy.html

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-iam-set-pw.html

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-iam-set-pw.html