この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
皆様こんにちは。株式会社協栄情報システム3部所属の比嘉です。
Cloud9からIAMロールの作成をしていたのですが、権限エラーが発生してしまいました。
この記事では権限エラー発生の解決方法についてまとめていきます。
Cloud9の権限のしくみ
Cloud9とは
Cloud9は、ブラウザのみでコードを記述できるクラウドベースのIDE(統合開発環境)です。
Cloud9ではデフォルトで、AWS Managed Temporary Credentials(AMTC)が有効になっています。 これが有効になっていることで、AWSマネジメントコンソールへログインしたユーザーと同等の権限をもつ一時クレデンシャルキーが自動で発行され、すぐにCloud9上で開発作業を開始できます。
AMTCについて
AWS Cloud9でAMTCを利用してAWSサービスへリクエストを行う場合は、Cloud9に接続しているAWSエンティティとAMTCのいずれに対してもIAMで許可されたリソースおよびアクションのみ、リクエストが成功します。
権限エラーの解決
AMTCが有効になっている状態でIAMロール、ポリシーの作成を試みたところ、下記のエラーが発生しました。
AMTCを無効化する
Cloud9の画面を開き、右上の設定アイコンから、「AWS Settings」を開き、Credentialsをオフにします。
マネジメントコンソール画面からIAMロールを作成
次に「IAM」→「ロール」から「ロールの作成」をします。
信頼されたエンティティタイプ→「AWSのサービス」、ユースケース→「EC2」を選択します。
許可の追加で許可ポリシーに「AdministratorAccess」を選択します。
ロール名を入力し、ロールを作成します。
IAMロールの作成ができました。
Cloud9のEC2にIAMロールをアタッチ
IAMロールが作成できたら、EC2コンソール画面からIAMロールをアタッチします。
Cloud9からコードを実行
私はcloud9からterraformでIAMの作成を行っていたので、下記コマンドを実行します。
$ terraform apply
無事権限エラーの解決ができました!
まとめ
今回の権限エラーの発生はAMTCが有効になっており、IAMに対するアクションが制限されていたことが原因でした。
解決策としてAMTCを無効にし、Cloud9のEC2にIAMロールをアタッチすることで解決できました。
今回のエラー発生から、権限回りの知識の習得が必要だと思いました。