本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
现代三层 Web 应用程序蓝图工作流程OnPullRequest失败,出现 Amazon 权限错误 CodeGuru
问题:当我尝试为我的项目运行工作流程时,工作流程无法运行,并显示以下消息:
Failed at codeguru_codereview: The action failed during runtime. View the action's logs for more details.
解决方案:此操作失败的一个可能原因可能是由于 IAM 角色策略中缺少权限,即您在连接 CodeCatalyst AWS 账户中使用的服务角色版本缺少 code guru_codereview 操作成功运行所需的权限。要解决此问题,要么必须使用所需权限更新服务角色,要么必须将用于工作流程的服务角色更改为具有 Amazon CodeGuru 和 Amazon CodeGuru Reviewer 所需权限的服务角色。使用以下步骤,找到您的角色并更新角色策略权限,以允许工作流程成功运行。
注意
这些步骤适用于中的以下工作流程 CodeCatalyst:
-
为使用现代三层 Web 应用程序蓝图创建的项目提供OnPullRequest的工作流程。 CodeCatalyst
-
通过访问 Amazon CodeGuru 或 Amazon CodeGuru Reviewer 的操作将工作流程添加到项目中 CodeCatalyst 。
每个项目都包含工作流程,其操作使用的是与您的项目AWS 账户关联的用户提供的角色和环境 CodeCatalyst。包含操作及其指定策略的工作流程存储在源存储库的 /.codetalyst/workflows 目录中。除非您要向现有工作流程添加新的角色 ID,否则无需修改工作流程 YAML。有关 YAML 模板元素和格式的信息,请参阅工作流程YAML定义。
以下是编辑角色策略和验证工作流程 YAML 时要遵循的高级步骤。
在工作流程 YAML 中引用您的角色名称并更新策略
打开 CodeCatalyst 控制台,网址为 https://codecatalyst.aws/
。 -
导航到您的 CodeCatalyst 空间。导航到您的项目。
-
选择 CI/CD,然后选择 “工作流程”。
-
选择标题为的工作流程OnPullRequest。选择 Definition (定义) 选项卡。
-
在工作流程 YAML 中,在 codeguru_codereview 操作下的
Role:
字段中,记下角色名称。这是您要在 IAM 中修改的策略中的角色。以下示例显示了角色名称。 -
请执行下列操作之一:
-
(推荐)将与您的项目关联的服务角色更新为亚马逊 CodeGuru 和亚马逊 CodeGuru 评论者所需的权限。该角色的
CodeCatalystWorkflowDevelopmentRole-
名称将附加唯一标识符。有关角色和角色策略的更多信息,请参阅了解CodeCatalystWorkflowDevelopmentRole-spaceName服务角色。继续执行后续步骤,在 IAM 中更新策略。spaceName
注意
您必须拥有具有角色和策略的AWS管理员访问权限。AWS 账户
-
将用于工作流程的服务角色更改为具有 Amazon CodeGuru 和 Amazon CodeGuru Reviewer 所需权限的服务角色,或者创建具有所需权限的新角色。
-
-
登录AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 在 IAM 控制台中,找到步骤 5 中的角色,例如
CodeCatalystPreviewDevelopmentRole
。 -
在步骤 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" } ] }
-
修改政策后,返回 CodeCatalyst 并重新开始运行工作流程。