簡體   English   中英

無法在 CodeBuild 中更新服務角色並出現錯誤“策略未附加到角色”

[英]Unable to update Service Role in CodeBuild with error "The policy was not attached to role"

當我創建一個全新的 CodeBuild 項目時,它允許我使用 select 一個 IAM 服務角色,當我選中“允許 AWS CodeBuild 修改此服務角色以便它可以與此構建項目一起使用”復選框時,AWS 會修改該服務角色使用特定於此角色的自定義策略。

但是,如果在創建該 CodeBuild 項目后我想為其附加一個不同的服務角色,我會不斷收到以下消息:“該策略未附加到角色 [x]”

在此處輸入圖像描述

我很確定我在某處缺少許可,但我不確定在哪里。

使用更多故障排除數據進行編輯:

  • 如果我取消選中“允許 aws [...]”框,它允許我更新 CodeBuild 項目配置,但所有后續構建都會在啟動時失敗。 這是預期的。

  • 如果我嘗試重新添加我在創建該項目時添加到該項目的原始服務角色,它可以讓我毫無問題地添加它。

當我嘗試創建一個可以被我的所有 CodeBuild 項目使用的更通用的角色時,我遇到了類似的問題。 我解決它的方法是取消選中“允許 AWS CodeBuild 修改此服務角色,以便它可以與此構建項目一起使用”復選框

我必須確保我附加的角色具有所有必要的 IAM 權限,以便我的后續構建繼續運行

在此處輸入圖片說明

我遇到了同樣的問題,並注意到分配給 CodeBuild 項目的先前角色還附加了一個托管策略,該策略已在最初創建項目時添加。 此角色的名稱類似於:

CodeBuildBasePolicy-項目名稱-us-west-2

我將此策略附加到新角色並將其與舊角色分離。

在此之后,我能夠選擇“更新環境”並且沒有收到錯誤消息。

在這個問題上花了很長時間,我發現了問題!

我修改了我的CodeBuildServiceRole-projectName基本策略,而不是創建新策略並將其附加到CodeBuildServiceRole-projectName角色。 您永遠不應編輯由 CodePipeline 創建的內聯策略。 只為角色創建和添加新策略。

正如 AWS 在其文檔中模糊地指出的那樣:

修改策略聲明或將另一個策略附加到角色可能會阻止您的管道運行。 在以任何方式修改 CodePipeline 的服務角色之前,請確保您了解其中的含義。 確保在對服務角色進行任何更改后測試您的管道。

如果您刪除 CodeBuild 項目,CodeBuild 創建的策略仍附加到現有角色。 當您創建一個與已刪除項目同名的新項目時 - 將發生此錯誤。

我的解決方案是刪除管道中引用的所有角色和策略並重建這些角色和策略。 然后重建管道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM