

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 排查项目和蓝图的问题
<a name="projects-troubleshooting"></a>

此部分可帮助您解决在 Amazon CodeCatalyst 中使用项目和蓝图时可能遇到的一些常见问题。

# 带有 AWS Fargate 蓝图的 Java API 缺少 ap ache-maven-3.8.6 的依赖关系
<a name="projects-troubleshooting-error-maven"></a>

**问题：**对于通过 Java API 创建的带有 AWS Fargate 蓝图的项目，工作流程失败并显示缺少`apache-maven-3.8.6`依赖项的错误。工作流失败，并显示与以下示例类似的输出：

```
Step 8/25 : RUN wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz -P /tmp
---> Running in 1851ce6f4d1b
[91m--2023-03-10 01:24:55--  https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
[0m[91mResolving dlcdn.apache.org (dlcdn.apache.org)... 
[0m[91m151.101.2.132, 2a04:4e42::644
Connecting to dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443... 
[0m[91mconnected.
[0m[91mHTTP request sent, awaiting response... [0m[91m404 Not Found
2023-03-10 01:24:55 ERROR 404: Not Found.
[0mThe command '/bin/sh -c wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz -P /tmp' returned a non-zero code: 8
[Container] 2023/03/10 01:24:55 Command failed with exit status 8
```

**解决方案：**执行以下步骤来更新蓝图 Dockerfile。

1. 在搜索栏中，输入 `apache-maven-3.8.6` 以在使用带 AWS Fargate 的 Java API 蓝图创建的项目中找到 dockerfile。

1.  更新 Dockerfile（`/static-assets/app/Dockerfile`）以将 `maven:3.9.0-amazoncorretto-11` 用作基础映像，并移除 `apache-maven-3.8.6` 程序包的依赖项。

1. （推荐）我们还建议您将 Maven 堆大小更新为 6 GB。

以下是示例 Dockerfile。

```
FROM maven:3.9.0-amazoncorretto-11 AS builder

COPY ./pom.xml ./pom.xml
COPY src ./src/

ENV MAVEN_OPTS='-Xmx6g'

RUN mvn -Dmaven.test.skip=true clean package

FROM amazoncorretto:11-alpine

COPY —from=builder target/CustomerService-0.0.1.jar CustomerService-0.0.1.jar
EXPOSE 80
CMD ["java","-jar","-Dspring.profiles.active=prod","/CustomerService-0.0.1.jar", "—server.port=80"]
```

# 现代三层 Web 应用程序蓝图工作流程**OnPullRequest**失败，出现 Amazon 权限错误 CodeGuru
<a name="projects-troubleshooting-onpullrequest"></a>

**问题：**当我尝试为我的项目运行一个工作流时，此工作流无法运行，并显示以下消息：

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

``

**解决方案：**此操作失败的一个可能原因可能是由于 IAM 角色策略中缺少权限，即您在连接 CodeCatalyst AWS 账户 中使用的服务角色版本缺少 code **guru\$1codereview** 操作成功运行所需的权限。要解决此问题，要么必须使用所需权限更新服务角色，要么必须将用于工作流程的服务角色更改为具有 Amazon CodeGuru 和 Amazon CodeGuru Reviewer 所需权限的服务角色。使用以下步骤，找到您的角色并更新角色策略权限，以使工作流能够成功运行。

**注意**  
这些步骤适用于中的以下工作流程 CodeCatalyst：  
为使用现代三层 Web 应用程序蓝图创建的项目提供**OnPullRequest**的工作流程。 CodeCatalyst
通过访问 Amazon CodeGuru 或 Amazon CodeGuru Reviewer 的操作将工作流程添加到项目中 CodeCatalyst 。

每个项目都包含工作流程，其操作使用的是与您的项目 AWS 账户 关联的用户提供的角色和环境 CodeCatalyst。包含操作及其指定策略的工作流存储在源存储库中的 /.codecatalyst/workflows 目录中。除非您要向现有工作流添加新的角色 ID，否则无需修改工作流 YAML。有关 YAML 模板元素和格式的信息，请参阅[工作流 YAML 定义](workflow-reference.md)。

以下是编辑角色策略和验证工作流 YAML 时要遵循的高级步骤。

**在工作流 YAML 中引用您的角色名称并更新策略**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到您的 CodeCatalyst 空间。导航到您的项目。

1. 选择 **CI/CD**，然后选择**工作流**。

1. 选择标题为的工作流程**OnPullRequest**。选择**定义**选项卡。

1. 在工作流 YAML 中，在 **codeguru\$1codereview** 操作下的 `Role:` 字段中，记下角色名称。这是具有要在 IAM 中修改的策略的角色。以下示例显示了角色名称。  
![\[在工作流 YAML 中查看 IAM 角色名称\]](http://docs.aws.amazon.com/zh_cn/codecatalyst/latest/userguide/images/projects/ts-workflow-role.png)

1. 请执行以下操作之一：
   + （推荐）将与您的项目关联的服务角色更新为亚马逊 CodeGuru 和亚马逊 CodeGuru 评论者所需的权限。该角色的名称为 `CodeCatalystWorkflowDevelopmentRole-spaceName`，并且将附加唯一标识符。有关角色和角色策略的更多信息，请参阅[了解 **CodeCatalystWorkflowDevelopmentRole-*spaceName*** 服务角色](ipa-iam-roles.md#ipa-iam-roles-service-role)。继续执行后续步骤以在 IAM 中更新策略。
**注意**  
您必须拥有具有角色和策略的 AWS 管理员访问权限。 AWS 账户 
   + 将用于工作流程的服务角色更改为具有 Amazon CodeGuru 和 Amazon CodeGuru Reviewer 所需权限的服务角色，或者创建具有所需权限的新角色。

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

   在 IAM 控制台中，找到步骤 5 中的角色，例如 `CodeCatalystPreviewDevelopmentRole`。

1. 在步骤 5 中的角色中，将权限策略更改为包含 `codeguru-reviewer:*` 和 `codeguru:*` 权限。添加这两项权限后，权限策略应类似于以下内容：

1. 修改政策后，返回 CodeCatalyst 并重新开始运行工作流程。

## 还在寻求如何解决您的问题吗？
<a name="projects-last-help"></a>

您可以转到 [Amazon CodeCatalyst](https://codecatalyst.aws/) 或填写[支持反馈表单](https://support.aws.amazon.com/#/contacts/aws-account-support/)。在**请求信息**部分中的**我们如何帮助您**下，说明您是 Amazon CodeCatalyst 客户。请尽量提供详细信息，以便我们能最有效地解决您的问题。