現代三層 Web 應用程式藍圖工作流程OnPullRequest失敗,並顯示 Amazon 的許可錯誤 CodeGuru - Amazon CodeCatalyst

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

現代三層 Web 應用程式藍圖工作流程OnPullRequest失敗,並顯示 Amazon 的許可錯誤 CodeGuru

問題︰當我嘗試為我的專案執行工作流程時,工作流程無法執行,並顯示下列訊息︰

Failed at codeguru_codereview: The action failed during runtime. View the action's logs for more details.

解決方案:此動作失敗的一個可能原因可能AWS 帳戶是由於 IAM 角色政策中缺少許可,因為您在連線 CodeCatalyst 中使用的服務角色版本缺少 codeguru_codereview 動作成功執行的必要權限。若要修正此問題,必須使用必要的許可更新服務角色,或者您必須將用於工作流程的服務角色變更為具有 Amazon CodeGuru 和 Amazon CodeGuru Reviewer 所需許可的服務角色。使用下列步驟尋找您的角色並更新角色原則權限,以允許工作流程成功執行。

注意

這些步驟適用於下列中的工作流程 CodeCatalyst:

  • 針對使用中 CodeCatalyst的 Modern 三層 Web 應用OnPullRequest程式藍圖建立的專案所提供的工作流程。

  • 使用可存取 Amazon CodeGuru 或 Amazon CodeGuru 審核者 CodeCatalyst 的動作新增至專案的工作流程。

每個專案都包含工作流程,其中包含動作,這些動作使用AWS 帳戶連接至中的專案所提供的角色和環境 CodeCatalyst。包含動作及其指定原則的工作流程會儲存在 /.codealys/工作流程目錄中的來源儲存庫中。除非您要將新的角色識別碼新增至現有的工作流程,否則不需要修改工作流程 YAML。如需 YAML 範本元素和格式的詳細資訊,請參閱工作流程YAML定義

這些是編輯角色原則和驗證工作流程 YAML 所需遵循的高階步驟。

在工作流程 YAML 中參照您的角色名稱並更新原則
  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 導覽至您的 CodeCatalyst 空間。導航到您的項目。

  3. 選擇 CI/CD,然後選擇「工作流程」。

  4. 選擇標題為的工作流程OnPullRequest。選擇 Definition (定義) 索引標籤。

  5. 在工作流程 YAML 中,在 codeguru_codereview 動作下的Role:欄位中,記下角色名稱。這是您將在 IAM 中修改之政策的角色。下列範例顯示角色名稱。

    在工作流程 YAML 中檢視 IAM 角色名稱
  6. 執行下列任意一項:

    • (建議) 使用 Amazon CodeGuru 和 Amazon CodeGuru 審核者所需的許可更新與專案連線的服務角色。該角色將具有附加唯CodeCatalystWorkflowDevelopmentRole-spaceName一標識符的名稱。如需有關角色和角色原則的詳細資訊,請參閱了解服CodeCatalystWorkflowDevelopmentRole-spaceName務角色。繼續執行後續步驟以更新 IAM 中的政策。

      注意

      您必須具有角色和策略AWS 帳戶的AWS管理員存取權。

    • 將用於工作流程的服務角色變更為具有 Amazon CodeGuru 和 Amazon CodeGuru 審核者所需許可的服務角色,或使用所需許可建立新角色。

  7. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

    在 IAM 主控台中,尋找步驟 5 中的角色,例如CodeCatalystPreviewDevelopmentRole

  8. 在步驟 5 的角色中,變更權限原則以包含codeguru-reviewer:*codeguru:*權限。新增這些權限之後,權限原則看起來應該類似下列內容:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudformation:*", "lambda:*", "apigateway:*", "ecr:*", "ecs:*", "ssm:*", "codedeploy:*", "s3:*", "iam:DeleteRole", "iam:UpdateRole", "iam:Get*", "iam:TagRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePolicy", "iam:CreatePolicy", "iam:DeletePolicy", "iam:CreatePolicyVersion", "iam:DeletePolicyVersion", "iam:PutRolePermissionsBoundary", "iam:DeleteRolePermissionsBoundary", "sts:AssumeRole", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule", "cloudwatch:DescribeAlarms", "sns:Publish", "sns:ListTopics", "codeguru-reviewer:*", "codeguru:*" ], "Resource": "*", "Effect": "Allow" } ] }
  9. 進行原則更正後,請返回 CodeCatalyst 並重新啟動工作流程。