IAM の権限は「グループにポリシーを付け、ユーザーをグループに入れる」形にすると管理しやすくなります。AWS CLI では create-group → attach-group-policy → create-user → add-user-to-group の 4 つのコマンドで組み立てられます。 人が増えたり担当が変わったりしても、グループへの出し入れだけで権限をそろえられるのが利点です。

この記事では、この 4 つのコマンドを実行出力つきで通したあと、「誰がどのグループにいて、どの権限を持っているか」を確かめる一覧コマンドと --query の例、ユーザー削除で出る DeleteConflict の読み方、削除前に外すものの一覧表、一括で削除するスクリプトまでを扱います。

確認環境:Ubuntu 24.04、AWS CLI 1.46.1、Python 3.11。AWS の API をローカルで再現するツール(moto 5.2.3)で実行しました。掲載するコマンドは、ローカル向けの接続先指定を外して AWS でそのまま使える形にしています。アカウント ID は例示用の 123456789012 です。

IAM ユーザー・グループ操作の早見表

作成・確認・削除でよく使うコマンドを、やりたいことから引けるようにまとめます。

やりたいこと コマンド
グループを作る aws iam create-group --group-name developers
グループに管理ポリシーを付ける aws iam attach-group-policy --group-name developers --policy-arn ARN
グループにインラインポリシーを書く aws iam put-group-policy --group-name developers --policy-name 名前 --policy-document file://x.json
ユーザーを作る aws iam create-user --user-name taro
ユーザーをグループに入れる aws iam add-user-to-group --group-name developers --user-name taro
ユーザーを一覧する aws iam list-users
グループを一覧する aws iam list-groups
ユーザーの所属グループを見る aws iam list-groups-for-user --user-name taro
グループのメンバーを見る aws iam get-group --group-name developers
グループの管理ポリシーを見る aws iam list-attached-group-policies --group-name developers
グループのインラインポリシーを見る aws iam list-group-policies --group-name developers
ポリシーが誰に付いているかを見る aws iam list-entities-for-policy --policy-arn ARN
ユーザーをグループから外す aws iam remove-user-from-group --group-name developers --user-name taro
グループからポリシーを外す aws iam detach-group-policy --group-name developers --policy-arn ARN
ユーザーを削除する aws iam delete-user --user-name taro(付いているものを先に外す)
グループを削除する aws iam delete-group --group-name developers(メンバーとポリシーを先に外す)

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「IAMユーザーとグループをAWS CLIで作成|権限付与・一覧・削除」

グループを作ってポリシーを付け、ユーザーを所属させる

1. グループを作成する(create-group)

aws iam create-group --group-name developers
{
    "Group": {
        "Path": "/",
        "GroupName": "developers",
        "GroupId": "uzrt15n11rob277nqtqq",
        "Arn": "arn:aws:iam::123456789012:group/developers",
        "CreateDate": "2026-10-05T06:43:40.289700Z"
    }
}

作った時点のグループは、メンバーも権限も持たない空の入れ物です。 IAM ユーザーガイドによると、グループには次の性質があります。

性質 内容
入れ子 グループの中にグループは入れられない。入れられるのはユーザーだけ
所属の数 1 人のユーザーが複数のグループに所属できる
既定のグループ 全ユーザーが自動で入るグループは無い。必要なら自分で作って追加する
ポリシーの Principal グループをリソースベースポリシーの Principal には指定できない

2. グループにポリシーを付ける(attach-group-policy)

AWS があらかじめ用意している管理ポリシー ReadOnlyAccess を付けます。成功すると何も出力されません。

aws iam attach-group-policy \
  --group-name developers \
  --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess

AWS 管理ポリシーの ARN は arn:aws:iam::aws:policy/ポリシー名 の形です。名前がうろ覚えのときは list-policies で探せます。

aws iam list-policies --scope AWS \
  --query "Policies[?contains(PolicyName,'ReadOnlyAccess')].PolicyName | [0:5]"
[
    "AIDevOpsAgentReadOnlyAccess",
    "AIOpsReadOnlyAccess",
    "AWSAccountManagementReadOnlyAccess",
    "AWSAppFabricReadOnlyAccess",
    "AWSAppRunnerReadOnlyAccess"
]

特定のバケットだけ読み書きさせたい、といったそのグループ専用の細かい権限は、インラインポリシーとして直接書き込めます。次の JSON を inline-s3.json として保存します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject"],
      "Resource": "arn:aws:s3:::example-app-logs/*"
    }
  ]
}
aws iam put-group-policy \
  --group-name developers \
  --policy-name app-logs-rw \
  --policy-document file://inline-s3.json
付け方 コマンド 向いている場面
管理ポリシーをアタッチ attach-group-policy 複数のグループやロールで同じ権限を使い回す
インラインポリシーを書き込む put-group-policy そのグループだけの権限を、グループと一緒に管理する

IAM のクォータの説明によると、1 つのグループにアタッチできる管理ポリシーは 10 個まで、グループのインラインポリシーは合計 5,120 文字までです。

3. ユーザーを作成する(create-user)

aws iam create-user --user-name taro --tags Key=team,Value=web
{
    "User": {
        "Path": "/",
        "UserName": "taro",
        "UserId": "x1vejdd40ptbf06c4y62",
        "Arn": "arn:aws:iam::123456789012:user/taro",
        "CreateDate": "2026-10-05T06:43:56.007306Z",
        "Tags": [
            {
                "Key": "team",
                "Value": "web"
            }
        ]
    }
}

create-user が作るのは「名前だけのユーザー」です。 パスワードもアクセスキーも権限も、まだ何も持っていません。出力が長いときは --query で必要な項目だけにできます。

aws iam create-user --user-name hanako --query 'User.[UserName,Arn]' --output text
hanako  arn:aws:iam::123456789012:user/hanako

名前の決まり(IAM のクォータの説明より)は次のとおりです。

対象 長さ 使える文字 大文字・小文字
ユーザー名 64 文字まで 英数字と + = , . @ _ - 区別されない(ADMINS と admins は同時に作れない)
グループ名 128 文字まで 同上 同上

マネジメントコンソールにサインインさせるユーザーには、初期パスワードを設定します。--password-reset-required は、CLI のヘルプで「次回のサインイン時に新しいパスワードの設定を求めるかどうか」を指定するオプションと説明されています。

aws iam create-login-profile --user-name taro \
  --password 'Init-Pass-2026!' --password-reset-required \
  --query 'LoginProfile.UserName' --output text
taro

4. ユーザーをグループに入れる(add-user-to-group)

成功すると何も出力されません。

aws iam add-user-to-group --group-name developers --user-name taro
aws iam add-user-to-group --group-name developers --user-name hanako

もう 1 つ admins グループを作り、AdministratorAccess を付けて taro だけを追加しておきます。

aws iam create-group --group-name admins --query 'Group.GroupName' --output text
aws iam attach-group-policy --group-name admins \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
aws iam add-user-to-group --group-name admins --user-name taro
admins

これで次の状態になりました。

ユーザー 所属グループ グループ経由で持つ権限
taro developers、admins ReadOnlyAccess、app-logs-rw(インライン)、AdministratorAccess
hanako developers ReadOnlyAccess、app-logs-rw(インライン)

誰がどの権限を持つかを一覧で確かめる

確認は「ユーザーから見る」「グループから見る」「ポリシーから見る」の 3 方向でできます。

ユーザーとグループの一覧

aws iam list-users --query 'Users[].[UserName,Arn,CreateDate]' --output table
------------------------------------------------------------------------------------
|                                     ListUsers                                    |
+--------+-----------------------------------------+-------------------------------+
|  taro  |  arn:aws:iam::123456789012:user/taro    |  2026-10-05T06:43:56.007306Z  |
|  hanako|  arn:aws:iam::123456789012:user/hanako  |  2026-10-05T06:44:00.274226Z  |
+--------+-----------------------------------------+-------------------------------+
aws iam list-groups --query 'Groups[].[GroupName,Arn]' --output table
--------------------------------------------------------------
|                         ListGroups                         |
+------------+-----------------------------------------------+
|  developers|  arn:aws:iam::123456789012:group/developers   |
|  admins    |  arn:aws:iam::123456789012:group/admins       |
+------------+-----------------------------------------------+

ユーザーから見る:所属グループ(list-groups-for-user)

aws iam list-groups-for-user --user-name taro \
  --query 'Groups[].GroupName' --output text
developers  admins

全ユーザーの所属を 1 行ずつ並べるには、list-users の結果でループします。

for u in $(aws iam list-users --query 'Users[].UserName' --output text); do
  echo "$u: $(aws iam list-groups-for-user --user-name $u \
    --query 'Groups[].GroupName' --output text)"
done
taro: developers    admins
hanako: developers

グループから見る:メンバーとポリシー(get-group ほか)

get-group は、グループの情報と一緒にメンバーのユーザー一覧を返します。

aws iam get-group --group-name developers --query 'Users[].UserName' --output text
taro    hanako

グループに付いているポリシーは、管理ポリシーとインラインポリシーで別のコマンドです。

aws iam list-attached-group-policies --group-name developers
{
    "AttachedPolicies": [
        {
            "PolicyName": "ReadOnlyAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/ReadOnlyAccess"
        }
    ]
}
aws iam list-group-policies --group-name developers
{
    "PolicyNames": [
        "app-logs-rw"
    ]
}

インラインポリシーの中身は get-group-policy で読めます。

aws iam get-group-policy --group-name developers --policy-name app-logs-rw \
  --query 'PolicyDocument.Statement[0].Action'
[
    "s3:GetObject",
    "s3:PutObject"
]

ポリシーから見る:どこに付いているか(list-entities-for-policy)

強い権限のポリシーが誰に渡っているかを調べるときは、ポリシー側から引くのが早道です。

aws iam list-entities-for-policy \
  --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess
{
    "PolicyGroups": [
        {
            "GroupName": "developers",
            "GroupId": "uzrt15n11rob277nqtqq"
        }
    ],
    "PolicyUsers": [],
    "PolicyRoles": []
}
aws iam list-entities-for-policy \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess \
  --query 'PolicyGroups[].GroupName' --output text
admins

アカウント内でどこかに付いている AWS 管理ポリシーだけを、付いている数と一緒に並べることもできます。

aws iam list-policies --scope AWS --only-attached \
  --query 'Policies[].[PolicyName,AttachmentCount]' --output text
AdministratorAccess 1
ReadOnlyAccess  1

1 人のユーザーが持つ権限をまとめて表示するスクリプト

ユーザーの権限は、本人に直接付いたポリシーと、所属する各グループのポリシーの合計です。4 種類の一覧コマンドを順に呼ぶスクリプトにしておくと、確認が 1 回で済みます。

#!/bin/bash
# 使い方: bash who.sh ユーザー名
USER_NAME=$1
echo "== $USER_NAME に直接付いた管理ポリシー"
aws iam list-attached-user-policies --user-name "$USER_NAME" \
  --query 'AttachedPolicies[].PolicyName' --output text
echo "== $USER_NAME のインラインポリシー"
aws iam list-user-policies --user-name "$USER_NAME" \
  --query 'PolicyNames' --output text
for g in $(aws iam list-groups-for-user --user-name "$USER_NAME" \
             --query 'Groups[].GroupName' --output text); do
  echo "== グループ $g の管理ポリシー"
  aws iam list-attached-group-policies --group-name "$g" \
    --query 'AttachedPolicies[].PolicyName' --output text
  echo "== グループ $g のインラインポリシー"
  aws iam list-group-policies --group-name "$g" \
    --query 'PolicyNames' --output text
done
bash who.sh taro
== taro に直接付いた管理ポリシー
== taro のインラインポリシー
== グループ developers の管理ポリシー
ReadOnlyAccess
== グループ developers のインラインポリシー
app-logs-rw
== グループ admins の管理ポリシー
AdministratorAccess
== グループ admins のインラインポリシー

taro 本人には何も付いておらず、権限はすべてグループ経由だとわかります。

確かめたいこと 管理ポリシー インラインポリシー
ユーザーに直接付いたもの list-attached-user-policies list-user-policies
グループに付いたもの list-attached-group-policies list-group-policies

ユーザー削除と DeleteConflict

付いているものがあると delete-user は止まる

CLI からのユーザー削除は、ユーザーに付いているものを先に自分で外す必要があります。 IAM の API リファレンス(DeleteUser)にも「マネジメントコンソールと違い、プログラムから削除するときは、ユーザーに付いている項目を手動で削除する。そうしないと削除は通らない」という説明があります。

taro に、アクセスキー・管理ポリシー・インラインポリシーを追加した状態で試します(パスワードは設定済み、2 つのグループに所属)。

aws iam create-access-key --user-name taro --query 'AccessKey.[UserName,Status]' --output text
aws iam attach-user-policy --user-name taro \
  --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
aws iam put-user-policy --user-name taro \
  --policy-name app-logs-rw --policy-document file://inline-s3.json

aws iam delete-user --user-name taro
taro    Active

An error occurred (DeleteConflict) when calling the DeleteUser operation: Cannot delete entity, must detach all policies first.

管理ポリシーをデタッチして、もう一度削除を試します。

aws iam detach-user-policy --user-name taro \
  --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
aws iam delete-user --user-name taro
An error occurred (DeleteConflict) when calling the DeleteUser operation: Cannot delete entity, must delete policies first.

エラー文の後半が変わりました。 「must detach all policies first」は管理ポリシーが、「must delete policies first」はインラインポリシーが残っているという意味です。DeleteConflict は「削除しようとしたものに、まだ付属するものがある」ときのエラーコードで、メッセージが何を外せばよいかを教えてくれます。

残りを順に外すと、削除が通ります。

aws iam delete-user-policy --user-name taro --policy-name app-logs-rw
aws iam delete-login-profile --user-name taro

aws iam list-access-keys --user-name taro \
  --query 'AccessKeyMetadata[].[AccessKeyId,Status]' --output text
aws iam delete-access-key --user-name taro --access-key-id AKIARZPUZDIKE5DUWXOJ

aws iam remove-user-from-group --group-name developers --user-name taro
aws iam remove-user-from-group --group-name admins --user-name taro
aws iam delete-user --user-name taro
aws iam list-users --query 'Users[].UserName' --output text
AKIARZPUZDIKE5DUWXOJ    Active
hanako

削除前に外すものの一覧表

IAM ユーザーガイド(IAM ユーザーの削除)と API リファレンス(DeleteUser)に挙げられている項目を、確認コマンドと外すコマンドの組にしました。

順 外すもの 確認するコマンド 外すコマンド
1 コンソール用パスワード get-login-profile delete-login-profile
2 アクセスキー list-access-keys delete-access-key
3 署名証明書 list-signing-certificates delete-signing-certificate
4 SSH 公開鍵 list-ssh-public-keys delete-ssh-public-key
5 Git 認証情報(サービス固有の認証情報) list-service-specific-credentials delete-service-specific-credential
6 MFA デバイス list-mfa-devices deactivate-mfa-device、仮想 MFA は続けて delete-virtual-mfa-device
7 インラインポリシー list-user-policies delete-user-policy
8 管理ポリシー list-attached-user-policies detach-user-policy
9 所属グループ list-groups-for-user remove-user-from-group
10 ユーザー本体 get-user delete-user

ユーザーを一括で削除するスクリプト

上の表のうち、パスワード・アクセスキー・署名証明書・SSH 公開鍵・MFA デバイス・ポリシー・所属グループを順に外してからユーザーを削除するスクリプトです。Git 認証情報を発行しているユーザーは、表の 5 のコマンドで先に削除しておきます。

#!/bin/bash
# 使い方: bash delete-user.sh ユーザー名
# ユーザーに付いているものを順に外してから、ユーザー本体を削除する
set -euo pipefail
U=$1

# 0. ユーザーがいなければ終了
if ! aws iam get-user --user-name "$U" >/dev/null 2>&1; then
  echo "user not found: $U"
  exit 1
fi

# 1. コンソール用パスワード(無ければ何もしない)
if aws iam get-login-profile --user-name "$U" >/dev/null 2>&1; then
  aws iam delete-login-profile --user-name "$U"
  echo "deleted login profile"
fi

# 2. アクセスキー
for K in $(aws iam list-access-keys --user-name "$U" \
    --query 'AccessKeyMetadata[].AccessKeyId' --output text); do
  aws iam delete-access-key --user-name "$U" --access-key-id "$K"
  echo "deleted access key: $K"
done

# 3. 署名証明書・SSH 公開鍵
for C in $(aws iam list-signing-certificates --user-name "$U" \
    --query 'Certificates[].CertificateId' --output text); do
  aws iam delete-signing-certificate --user-name "$U" --certificate-id "$C"
  echo "deleted signing certificate: $C"
done
for S in $(aws iam list-ssh-public-keys --user-name "$U" \
    --query 'SSHPublicKeys[].SSHPublicKeyId' --output text); do
  aws iam delete-ssh-public-key --user-name "$U" --ssh-public-key-id "$S"
  echo "deleted ssh public key: $S"
done

# 4. MFA デバイス
for M in $(aws iam list-mfa-devices --user-name "$U" \
    --query 'MFADevices[].SerialNumber' --output text); do
  aws iam deactivate-mfa-device --user-name "$U" --serial-number "$M"
  echo "deactivated mfa device: $M"
done

# 5. インラインポリシー
for P in $(aws iam list-user-policies --user-name "$U" \
    --query 'PolicyNames' --output text); do
  aws iam delete-user-policy --user-name "$U" --policy-name "$P"
  echo "deleted inline policy: $P"
done

# 6. 管理ポリシー
for A in $(aws iam list-attached-user-policies --user-name "$U" \
    --query 'AttachedPolicies[].PolicyArn' --output text); do
  aws iam detach-user-policy --user-name "$U" --policy-arn "$A"
  echo "detached policy: ${A##*/}"
done

# 7. 所属グループ
for G in $(aws iam list-groups-for-user --user-name "$U" \
    --query 'Groups[].GroupName' --output text); do
  aws iam remove-user-from-group --group-name "$G" --user-name "$U"
  echo "removed from group: $G"
done

# 8. ユーザー本体
aws iam delete-user --user-name "$U"
echo "deleted user: $U"

パスワード・アクセスキー・管理ポリシー・インラインポリシーを持ち、2 つのグループに所属する hanako に対して実行した結果です。2 回目は、ユーザーがもういないことを知らせて終わります。

bash delete-user.sh hanako
bash delete-user.sh hanako
deleted login profile
deleted access key: AKIARZPUZDIKHFCGPDOQ
deleted inline policy: app-logs-rw
detached policy: AmazonS3ReadOnlyAccess
removed from group: admins
removed from group: developers
deleted user: hanako
user not found: hanako

グループを削除する

グループも、メンバーとポリシーを外してから削除します。 API リファレンス(DeleteGroup)には「グループにユーザーが含まれておらず、ポリシーがアタッチされていないこと」が条件として書かれており、条件を満たさない場合のエラーとして DeleteConflict が挙げられています。

順 外すもの コマンド
1 メンバー remove-user-from-group
2 管理ポリシー detach-group-policy
3 インラインポリシー delete-group-policy
4 グループ本体 delete-group
#!/bin/bash
# 使い方: bash delete-group.sh グループ名
# メンバーとポリシーを外してから、グループ本体を削除する
set -euo pipefail
G=$1

if ! aws iam get-group --group-name "$G" >/dev/null 2>&1; then
  echo "group not found: $G"
  exit 1
fi

# 1. メンバーを外す
for U in $(aws iam get-group --group-name "$G" \
    --query 'Users[].UserName' --output text); do
  aws iam remove-user-from-group --group-name "$G" --user-name "$U"
  echo "removed user: $U"
done

# 2. 管理ポリシーをデタッチ
for A in $(aws iam list-attached-group-policies --group-name "$G" \
    --query 'AttachedPolicies[].PolicyArn' --output text); do
  aws iam detach-group-policy --group-name "$G" --policy-arn "$A"
  echo "detached policy: ${A##*/}"
done

# 3. インラインポリシーを削除
for P in $(aws iam list-group-policies --group-name "$G" \
    --query 'PolicyNames' --output text); do
  aws iam delete-group-policy --group-name "$G" --policy-name "$P"
  echo "deleted inline policy: $P"
done

# 4. グループ本体
aws iam delete-group --group-name "$G"
echo "deleted group: $G"

taro と hanako が所属し、管理ポリシーとインラインポリシーが 1 つずつ付いた developers に対して実行した結果です。

bash delete-group.sh developers
bash delete-group.sh developers
removed user: taro
removed user: hanako
detached policy: ReadOnlyAccess
deleted inline policy: app-logs-rw
deleted group: developers
group not found: developers

グループを削除しても、メンバーだったユーザーは残ります。所属だけが無くなります。

aws iam list-groups-for-user --user-name taro --query 'Groups[].GroupName'
[]

よく出るエラーと対処

IAM のエラーは、かっこ内のエラーコードで大きく 3 種類に分けて読めます。 「もうある(EntityAlreadyExists)」「見つからない(NoSuchEntity)」「まだ付いているものがある(DeleteConflict)」です。今回の確認環境で実際に出たものを並べます。

操作 エラー文 対処
同じ名前で create-user (EntityAlreadyExists) … User taro already exists 既存を使う。別人なら名前を変える
同じ名前で create-group (EntityAlreadyExists) … Group developers already exists 既存のグループにポリシーやメンバーを足す
パスワード設定済みのユーザーに create-login-profile (EntityAlreadyExists) … User taro already has password 変更は update-login-profile を使う
いないユーザーを add-user-to-group (NoSuchEntity) … The user with name jiro cannot be found. 先に create-user。名前のつづりを確認
無いグループに add-user-to-group (NoSuchEntity) … Group nogroup not found list-groups で名前を確認
ポリシー ARN の名前が違う (NoSuchEntity) … Policy arn:aws:iam::aws:policy/NoSuchPolicy was not found. list-policies で正しい名前を探す
ARN ではなくポリシー名だけを渡した Parameter validation failed: Invalid length for parameter PolicyArn, value: 14, valid min length: 20 arn:aws:iam::aws:policy/名前 の形で渡す
所属していないグループから外そうとした (NoSuchEntity) … User hanako not in group admins list-groups-for-user で所属を確認
付いていないポリシーをデタッチ (NoSuchEntity) … Policy arn:aws:iam::aws:policy/ReadOnlyAccess was not found. list-attached-group-policies で確認
無いインラインポリシーを削除 (NoSuchEntity) … Policy nothing not found list-group-policies で名前を確認
パスワード未設定のユーザーに get-login-profile (NoSuchEntity) … Login profile for hanako not found 未設定という意味。必要なら create-login-profile
管理ポリシーが残ったまま delete-user (DeleteConflict) … Cannot delete entity, must detach all policies first. detach-user-policy で外す
インラインポリシーが残ったまま delete-user (DeleteConflict) … Cannot delete entity, must delete policies first. delete-user-policy で削除する

既にグループにいるユーザーへの add-user-to-group と、既に付いているポリシーへの attach-group-policy は、もう一度実行してもエラーにならず、そのまま終わりました。スクリプトを繰り返し流すときは、create-user と create-group だけ「あるかどうか」を先に確かめれば足ります。

aws iam get-user --user-name taro >/dev/null 2>&1 || aws iam create-user --user-name taro

補足:パスでユーザーを整理する

人数が増えてきたら、--path でユーザーを部署やチームごとに分けておくと、一覧を絞り込めます。パスは ARN の一部になります。

aws iam create-user --user-name saburo --path /dev/ --query 'User.Arn' --output text
aws iam list-users --path-prefix /dev/ --query 'Users[].UserName' --output text
arn:aws:iam::123456789012:user/dev/saburo
saburo

よくある質問

Q. ポリシーはユーザーに直接付けてもよいですか? A. attach-user-policy で直接付けることもできます。ただ、同じ役割の人が複数いるなら、グループに付けてユーザーを所属させるほうが、担当変更のときに add-user-to-group と remove-user-from-group だけで済み、確認も get-group 1 回でできます。

Q. グループに入れた権限はいつから使えますか? A. グループにポリシーを付ける順番と、ユーザーを入れる順番はどちらが先でもかまいません。両方がそろった時点で、メンバー全員にそのグループのポリシーが適用されます。

Q. DeleteConflict が出たら何を見ればよいですか? A. エラー文の後半に、外すべきものの種類が書かれています。この記事の「削除前に外すものの一覧表」の確認コマンドで残っているものを調べ、対応するコマンドで外します。まとめて行うなら delete-user.sh が使えます。

Q. グループを削除するとメンバーのユーザーも消えますか? A. 消えません。メンバーを外してからグループを削除するので、ユーザーは残り、そのグループ経由の権限だけが無くなります。

まとめ

  • 権限は「グループにポリシー、ユーザーはグループに所属」の形にすると、出し入れだけで管理できる
  • 作成は create-group → attach-group-policy → create-user → add-user-to-group の 4 コマンド
  • 確認はユーザー(list-groups-for-user)・グループ(get-group)・ポリシー(list-entities-for-policy)の 3 方向から行える
  • 管理ポリシーは list-attached-…、インラインポリシーは list-…-policies と、コマンドが分かれている
  • delete-user の前に、パスワード・アクセスキー・ポリシー・所属グループなどを外す。残っていると DeleteConflict になる
  • グループの削除も、メンバーとポリシーを外してから行う
  • エラーは EntityAlreadyExists・NoSuchEntity・DeleteConflict の 3 種類に分けて読むと対処が早い

参考・出典

  • IAM API リファレンス:DeleteUser、DeleteGroup
  • IAM ユーザーガイド:IAM ユーザーの削除、IAM ユーザーグループ、IAM と AWS STS のクォータ

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「IAMユーザーとグループをAWS CLIで作成|権限付与・一覧・削除」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?