AWS CLIの振り返り ~IAM入門編~

#本記事の目的
JAWS-UG CLI オンラインハンズオンの復習として、ハンズオンで取り上げられたAWSサービスに関する用語と、使用したAWS CLI コマンドを箇条書きでまとめる。
今回はIAM入門編を取り上げる。

#主なAWSサービス用語
####ユーザ
AWSを利用するアカウント。

####ログインプロファイル
ユーザとパスワードの情報が含まれるオブジェクト。マネジメントコンソールにサインインする際に必要となる。

####アクセスキー
ユーザの認証情報。AWSリソースからのアクセスを認証する際に使用される。

####グループ
ユーザの集まり。複数のユーザのアクセス許可をまとめて管理する事ができる。

####管理ポリシー
AWSリソースに対する操作権限の一種。複数のユーザーやグループ、ロールに対して付与できる。

####ロール
ポリシーの集まり。複数のポリシーをまとめて付与する事ができる。

####信頼ポリシー
ロールに含まれるポリシー。






#主なAWS CLI コマンド一覧
####IAMユーザの作成
```
aws iam create-user \
  --user-name ${IAM_USER_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--user-name|IAMユーザ名|必須||

####IAMユーザの一覧表示
```
aws iam list-users
```

####IAMユーザの削除
```
aws iam delete-user \
  --user-name ${IAM_USER_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--user-name|IAMユーザ名|必須||

####ログインプロファイルの作成
```
aws iam create-login-profile \
  --user-name ${IAM_USER_NAME} \
  --password ${IAM_USER_PASSWORD}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--user-name|IAMユーザ名|必須||
|--password|パスワード|必須||

####ログインプロファイルの取得
```
aws iam get-login-profile \
  --user-name ${IAM_USER_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--user-name|IAMユーザ名|必須||

####ログインプロファイルの削除
```
aws iam delete-login-profile \
  --user-name ${IAM_USER_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--user-name|IAMユーザ名|必須||

####アクセスキーの作成
```
aws iam create-access-key \
  --user-name ${IAM_USER_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--user-name|IAMユーザ名|必須||

####アクセスキーの一覧表示
```
aws iam list-access-keys \
  --user-name ${IAM_USER_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--user-name|IAMユーザ名|任意||

####アクセスキーの削除
```
aws iam delete-access-key \
  --user-name ${IAM_USER_NAME} \
　　　　--access-key-id ${IAM_ACCESS_KEY_ID}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--user-name|IAMユーザ名|必須||
|--access-key-id|アクセスキーID|必須||

####IAMグループの作成
```
aws iam create-group \
  --group-name ${IAM_GROUP_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--group-name|IAMグループ名|必須||

####IAMグループの一覧表示
```
aws iam list-groups
```

####IAMグループの削除
```
aws iam delete-group \
  --group-name ${IAM_GROUP_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--group-name|IAMグループ名|必須||

####管理ポリシーの一覧表示
```
aws iam list-policies \
  --scope ${SCOPE_CONDITION} \
  --path-prefix ${IAM_POLICY_PATH} \
 　--max-items ${NUMBER_OF_POLICIES}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--scope|スコープ条件|任意|引数に`AWS`を指定する事で、AWSが管理するポリシーのみ表示する。`Local`を指定する事で、ユーザーが管理するポリシーのみ表示する。|
|--path-prefix|IAMポリシーのパス|任意|特定のポリシーのパスに一致するポリシーを表示可能。|
|--max-items|IAMポリシー表示数|任意|一画面で表示できるポリシーの最大数を決定できる。|

####IAMグループに対する管理ポリシーのアタッチ
```
aws iam attach-group-policy \
  --group-name ${IAM_GROUP_NAME} \
  --policy-arn ${IAM_POLICY_ARN}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--group-name|IAMグループ名|必須||
|--policy-arn|IAMポリシーARN|必須||

####IAMグループに対するアタッチ済管理ポリシーの一覧表示
```
aws iam list-attached-group-policies \
  --group-name ${IAM_GROUP_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--group-name|IAMグループ名|必須||

####IAMグループに対する管理ポリシーのデタッチ
```
aws iam detach-group-policy \
  --group-name ${IAM_GROUP_NAME} \
  --policy-arn ${IAM_POLICY_ARN}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--group-name|IAMグループ名|必須||
|--policy-arn|IAMポリシーARN|必須||

####IAMグループへのIAMユーザの追加
```
aws iam add-user-to-group \
  --group-name ${IAM_GROUP_NAME} \
  --user-name ${IAM_USER_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--group-name|IAMグループ名|必須||
|--user-name|IAMユーザ名|必須||

####IAMグループに属するIAMユーザの一覧表示
```
aws iam list-groups-for-user \
  --user-name ${IAM_USER_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--user-name|IAMユーザ名|必須||

####IAMグループからのIAMユーザの削除
```
aws iam remove-user-from-group \
  --group-name ${IAM_GROUP_NAME} \
  --user-name ${IAM_USER_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--group-name|IAMグループ名|必須||
|--user-name|IAMユーザ名|必須||

####IAMロールの作成
```
aws iam create-role　　\　　
　　　　--role-name ＄{IAM_ROLE_NAME}
  --assume-role-policy-document file://${FILE_IAM_POLICY_DOC}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--role-name|IAMロール名|必須||
|--assume-role-policy-document|file://<信頼ポリシードキュメントパス>|必須||

####IAMロールの一覧表示
```
aws iam list-roles
```

####IAMロールの削除
```
aws iam delete-role　　\　　
　　　　--role-name ＄{IAM_ROLE_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--role-name|IAMロール名|必須||

####IAMロールに対する管理ポリシーのアタッチ
```
aws iam attach-role-policy　　\　　
　　　　--role-name ＄{IAM_ROLE_NAME}　　\
　　 --policy-arn ＄{IAM_ROLE_ARN}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--role-name|IAMロール名|必須||
|--policy-arn|IAMロールARN|必須||

####IAMロールに対するアタッチ済管理ポリシーの一覧表示
```
aws iam list-attached-role-policies　　\　　
　　　　--role-name ＄{IAM_ROLE_NAME}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--role-name|IAMロール名|必須||

####IAMロールに対する管理ポリシーのデタッチ
```
aws iam detach-role-policy　　\
  --role-name ＄{IAM_ROLE_NAME}　　\
　　 --policy-arn ＄{IAM_ROLE_ARN}
```
|オプション|引数|必須/任意|備考|
|---|---|---|---|
|--role-name|IAMロール名|必須||
|--policy-arn|IAMロールARN|必須||

#参考文献
- AWSCLIコマンドリファレンス:[IAM](https://docs.aws.amazon.com/cli/latest/reference/iam/)
- JAWS-UG CLI専門支部：[ハンズオン(簡易版): IAM入門](http://prototype-handson-cli.s3-website-ap-northeast-1.amazonaws.com/handson_light-aws_service/handson_light-aws_service-iam-getting_started/index.html)
- JAWS-UG CLI専門支部：[ハンズオン(簡易版): IAM入門(ロール)](http://prototype-handson-cli.s3-website-ap-northeast-1.amazonaws.com/handson_light-aws_service/handson_light-aws_service-iam-novice-role/index.html)