記事を書こうと思ったきっかけ
AWSを使った初心者向けの勉強会を開催しようと思い、その際に参加者に実際の環境を使ってもらおうと考えた。
AWS環境を使って実現したいことは
- 参加者が私の環境下でリソースを操作できる
- 参加者には一括で適切なリソースの操作権限を付与する
- 参加者のアカウントは私が提供する
上記について、AWS Organizationを使えばできると思っていたが、調べていくと間違いだと気づき、そもそもアカウントとIAMユーザーを理解できていなかったのでそこをまとめてみた。
AWSアカウントとは
AWSアカウントとは1つのAWS環境を表している。身の回りの物で例えるとすると家=AWSアカウントといえる。家の中には机や椅子、家電など様々なリソースがあるように、AWSアカウントの中にEC2やS3などのAWSリソースを作る。
そのため、AWSアカウントというのは利用者(ユーザー)を示すのではなく、環境そのものを指している。
IAMユーザーとは
では、我々がイメージするアカウントは結局AWS上だと何であらわされるのかというと、IAMユーザーがそれにあたる。
AWSアカウントを作成するとルートユーザーが作成され、そこからIAMユーザーを作成していく。
AWSアカウントが家だとすると、IAMユーザーはそこに暮らすお父さんやお母さん、兄、姉なんかになると思う。ルートユーザーは先祖かなぁ…
AWS Organizationsは何ができるのか
公式サイトでは以下のように示されている。
Organizationsを使用するとアカウントを作成してリソースを割り当て、アカウントをグループ化してワークフローを整理し、ガバナンスのポリシーを適用し、すべてのアカウントに単一の支払い方法を使用して請求を簡素化できる。
つまり、複数の環境(AWSアカウント)を管理するために利用される。
研修の話に戻ると、参加者それぞれにAWSアカウントを作成してもらって、それを自分の環境下で管理したいのであればOrganizationsを使うことになる。しかし、今回は参加者にアカウント(IAMユーザー)を払い出して利用してもらいたいのが目的である。
結論
AWSアカウント = 環境
IAMユーザー = 一般的にイメージされるアカウント
ということだった。
研修環境を作成するには、IAMユーザーを作成しそれを適切なIAMポリシーを設定したIAMグループに入れることで、実現できそうだとわかった。