

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

# 问题排查
<a name="troubleshooting"></a>

以下主题可以帮助您解决在使用 HealthOmics 工作流程和数据存储时遇到的问题。

**Topics**
+ [排查工作流](#error-workflows)
+ [解决呼叫缓存问题](#workflow-cache-troubleshooting)
+ [对数据存储进行故障排除](#error-datastores)
+ [使用 Kiro CLI 进行故障排除](#kiro-cli-troubleshooting)

## 排查工作流
<a name="error-workflows"></a>

**Topics**
+ [如何对失败的运行进行故障排除？](#troubleshooting-run-fail)
+ [如何对失败的任务进行故障排除？](#troubleshooting-task-fail)
+ [在哪里可以找到成功完成运行的引擎日志？](#troubleshooting-engine-logs)
+ [如何减小工作流程的输入参数大小？](#troubleshooting-input-file-size)
+ [为什么我的跑步没有完成？](#troubleshooting-unresponsive-runs)

### 如何对失败的运行进行故障排除？
<a name="troubleshooting-run-fail"></a>

使用 **GetRun**API 操作检索失败原因。有关更多信息，请参阅 [运行失败原因](workflows-run-errors.md)。

### 如何对失败的任务进行故障排除？
<a name="troubleshooting-task-fail"></a>

查看任务失败消息中的错误代码以了解失败原因。查看任务登录 CloudWatch 以查看该任务的详细日志消息。如果您没有收到详细的日志消息，则可以修改工作流程以输出其他日志语句。有关更多信息，请参阅 [HealthOmics 使用 CloudWatch 日志进行监控](monitoring-cloudwatch-logs.md)。

### 在哪里可以找到成功完成运行的引擎日志？
<a name="troubleshooting-engine-logs"></a>

HealthOmics 仅向发布失败运行 CloudWatch 的日志。如果运行成功完成，则会将引擎日志 HealthOmics 传送到您的 Amazon S3 存储桶。有关更多信息，请参阅 [登录 Amazon S3](monitoring-cloudwatch-logs.md#s3-logs)。

### 如何减小工作流程的输入参数大小？
<a name="troubleshooting-input-file-size"></a>

您最多可以为工作流程指定 50 KB 的输入参数。您可以使用目录导入或样本表来保持在此大小限制范围内。有关更多信息，请参阅 [管理运行参数大小](workflows-run-inputs.md#run-input-file-options)。

### 为什么我的跑步没有完成？
<a name="troubleshooting-unresponsive-runs"></a>

如果您的代码存在问题并且进程未正确退出，则您的运行可能会变得无响应或 “卡住”。有关如何防止和 catch 无响应运行的更多信息，请参阅[无响应跑步指南](workflows-run-errors.md#workflows-guidance-unresponsive-runs)。

## 解决呼叫缓存问题
<a name="workflow-cache-troubleshooting"></a>

以下主题可以帮助您解决在呼叫缓存中遇到的问题。

**Topics**
+ [为什么我的跑步没有保存到缓存中？](#troubleshooting-did-run-cache)
+ [为什么任务不使用缓存条目？](#troubleshooting-did-run-cache)
+ [为什么任务的呼叫缓存被禁用？](#troubleshooting-task-cache-disabled)

### 为什么我的跑步没有保存到缓存中？
<a name="troubleshooting-did-run-cache"></a>

1. 通过检查 GetRun API 操作响应中的 cacheId 字段，验证运行是否配置为使用缓存。使用 CLI 运行以下命令：`aws omics get-run —id <run_id>`。

1. 如果运行成功，请验证 GetRun 响应中返回的缓存行为是否为 CACHE\$1ALWAYS。如果将缓存行为设置为 CACHE\$1ON\$1FAILURE，则只有在运行失败时才会保存到缓存中。

### 为什么任务不使用缓存条目？
<a name="troubleshooting-did-run-cache"></a>

<cache\$1id><cache\$1uuid>在`/aws/omics/WorkflowLog` CloudWatch 日志组中，打开运行缓存的日志流：r **unCache**//。

1. 验证之前的运行是否为预期要缓存的任务创建了缓存条目。已保存到缓存中的运行将记录在 CACHE\$1ENTRY\$1CREATED 的日志消息中。

1. 找到任务的 CACHE\$1MISS 日志，然后运行已完成的任务。如果没有日志条目，请检查运行是否已配置为使用缓存。

1. 如果创建了缓存条目，请验证这两个任务的 CPUs、内存 GPUs 和容器摘要是否相同。创建缓存条目的任务的任务 ARN 在日志消息中。

1. 如果两个任务的计算要求匹配，请验证两个任务之间的输入是否没有变化。为此，请打开引擎日志。如果运行的状态为 “失败”，则日志将位于 Cloudwatch 日志组/ aws/omics/WorkflowLog 中。否则，可以在运行的输出目录中找到引擎日志。

### 为什么任务的呼叫缓存被禁用？
<a name="troubleshooting-task-cache-disabled"></a>

使用工作流引擎功能检查任务是否配置为选择退出缓存：
+ 对于 WDL 工作流程：在元数据部分`true`中检查任务是否已设置为 volatile
+ 对于 Nextflow 工作流程：检查任务的缓存指令是否设置为 `false`
+ 对于 CWL 工作流程：检查任务是否已将该功能的 “启用重用” 设置为 `false` WorkReuse 

## 对数据存储进行故障排除
<a name="error-datastores"></a>

**Topics**
+ [为什么 S3 在我的读取集上 GetObject 失败？](#sequence-store-s3-getobject-failing)
+ [为什么我在 Athena 中看不到我的注释库或变体存储库？](#athena-troubleshooting)
+ [为什么我无法访问我在 Athena 中的数据存储？](#athena-engine-troubleshooting)

### 为什么 S3 在我的读取集上 GetObject 失败？
<a name="sequence-store-s3-getobject-failing"></a>

最常见的是，失败是由于缺少权限造成的。序列存储 S3 读取权限是一种双向配置，要求序列存储 S3 访问策略允许访问，并要求 IAM 委托人附加允许访问的策略。有关政策要求的更多详细信息，请参阅[使用 Amazon S3 访问数据的权限 URIs](s3-sharing.md)。检查以下配置是否已准备就绪：
+ 序列存储 S3 访问策略已明确允许访问 IAM 委托人或委托人账户的根目录。
+ 检查 IAM 委托人是否有明确为正在访问的资源提供权限的策略。请注意，在定义权限时，IAM 委托人策略必须使用接入点 ARN，而不是基于接入点别名的路径，并且 ARN 处于条件中，不用于指定资源。
+ 如果您的商店使用客户托管密钥 (CMK-KMS)，请确保 IAM 委托人对该密钥具有 kms:解密权限。有关配置[跨账户使用情况的信息，请参阅 KMS 跨账户访问指南](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)。

如果您的策略使用基于标签的访问控制，请确保以下几点：
+ 确保序列存储已完成对标签的同步。为此，商店的状态必须是**active**，而不是**updating**。
+ 确保读取集和策略上的标签键或键值中没有拼写错误。

### 为什么我在 Athena 中看不到我的注释库或变体存储库？
<a name="athena-troubleshooting"></a>

在 Lake Formation 中，请务必根据与你共享的商店创建资源链接。创建您有权访问的资源链接后，该商店应在 Athena 中可见。有关更多信息，请参阅 [配置 Lake Formation 以供使用 HealthOmics](setting-up-lf.md)。

### 为什么我无法访问我在 Athena 中的数据存储？
<a name="athena-engine-troubleshooting"></a>

如果您的注释或变体存储可见，但您收到一条错误消息，提示访问被拒绝，请检查您使用的查询引擎版本。仅支持使用引擎版本 3 运行的查询。要了解有关 Athena 查询引擎版本的更多信息，请参阅亚马逊 [A](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-changing.html) thena 文档。

## 使用 Kiro CLI 进行故障排除
<a name="kiro-cli-troubleshooting"></a>

[Kiro CLI](https://docs.aws.amazon.com/kiro/latest/userguide/what-is.html) 可以通过以下方式帮助您简化故障排除流程：
+ 分析工作流程运行和调试任务失败
+ 收集相关日志和错误消息
+ 创建附有所有必要调试日志的 Su AWS pport 案例
+ 从提交给 Support 的信息中删除个人身份信息 (PII) AWS 

有关使用 Kiro CLI 进行故障排除和创建支持案例 AWS HealthOmics 的更多信息，请参阅上的 A [HealthOmics gentic 生成式 AI 教程](https://github.com/aws-samples/aws-healthomics-tutorials/tree/main/generative-ai)。 GitHub

**警告**  
使用 Kiro CLI 时，请先查看所有生成的内容和建议的操作，然后再继续。提供反馈以提高响应质量并满足您的工作流程要求。有关更多信息，请参阅 Kiro [的安全注意事项和最佳实践](https://docs.aws.amazon.com/kiro/latest/userguide/command-line-chat-security.html)。