Help us understand the problem. What is going on with this article?

awsで "The policy is attached to 0 entities but it must be attached to a single role" エラーが出た場合の対処法

More than 1 year has passed since last update.

はじめに

awsのCodeBuildでビルドプロジェクトを作成しようとしたときに、以下のエラーが出てプロジェクトが作成できないという現象に遭遇しました。
"The policy is attached to 0 entities but it must be attached to a single role"

スクリーンショット 2019-01-08 13.46.47.png

本エラーの発生手順と解決策について以下にまとめます。

結論

本エラーはCodebuild(awsサービス)が自動的に作成し、指定したIAMロールにアタッチしようとしているポリシーA(CodeBuildBasePolicy-プロジェクト名-リージョン名)と同一のポリシーA'が既に存在*しており、かつ、当該IAMロールからポリシーA'がデタッチされていると発生します。

* 過去に同一のプロジェクト名でCodeBuildプロジェクトを作成している場合に存在する

ポリシーA'(CodeBuildBasePolicy-プロジェクト名-リージョン名)を削除すれば、エラーは発生しなくなります。

エラーが出る時

以下の手順で本エラーが発生します(2019/01/08現在)。

1. Codebuildでプロジェクトを作成する(例としてプロジェクト名を"testproject"とする)

※「AWS CodeBuild にこのサービスロールの編集を許可し、このビルドプロジェクトでの使用を可能にする」にチェックを入れて作成する

スクリーンショット 2019-01-08 14.04.34.png

2. 作成したtestprojectを削除する
3. testproject作成時に指定したロール(ここではRoleForCodeBuild)から、testproject作成時にCodeBuildが自動的に作成・アタッチしたポリシーをデタッチする

スクリーンショット 2019-01-08 13.45.52.png

4.CodeBuildプロジェクト作成画面を開きさきほどと同じ名前(testproject)を入力して、作成しようとする (「AWS CodeBuild にこのサービスロールの編集を許可し、このビルドプロジェクトでの使用を可能にする」にチェックを入れる)

「ビルドプロジェクトを作成する」を押すと本エラーが発生します。

エラーの原因

CodeBuildが自動的に作成して、ユーザが指定したロールにアタッチしようとしているポリシーが既に存在し、かつ、それが指定したロールからデタッチされているため、です。

以下のようなケースで起こりうると思います。

CodeBuildプロジェクトを削除しても、その時にCodeBuildが自動的に作成したポリシーは残ります。既存のロールに既に不要なポリシーが残っている(アタッチされている)のは気持ち悪いためロールの管理画面で×ボタンを押してデタッチします。その後、忘れた頃にまたCodeBuildでプロジェクト作るときに、たまたま以前と同じ名前でプロジェクトを作成すると、本エラーが発生します。

エラーの解決策

CodeBuildが自動的に作成したポリシーを削除する。

スクリーンショット 2019-01-08 13.53.04.png

CodeBuildが自動的に作成したポリシーであり、かつ、プロジェクトごとに作成されるポリシーのため、以前に作成されたCodeBuildBasePolicy-xxxポリシーは削除して問題ない。

まとめ

"The policy is attached to 0 entities but it must be attached to a single role"エラーが発生する条件とその解決方法をまとめました。

kyuaz
メーカーでIT技術者としてwebシステム開発に携わっています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした