

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

# 使用运行缓存
<a name="workflow-cache-startrun"></a>

默认情况下，运行不使用运行缓存。要使用缓存进行运行，请在开始运行时指定运行缓存和运行缓存行为。

运行完成后，您可以使用控制台、 CloudWatch 日志或 API 操作来跟踪缓存命中率或解决缓存问题。有关详细信息，请参阅 [跟踪呼叫缓存信息](#workflow-cache-track) 和 [解决呼叫缓存问题](troubleshooting.md#workflow-cache-troubleshooting)。

如果运行中的一个或多个任务生成不确定的输出，我们强烈建议您不要在运行中使用调用缓存，或者选择不缓存这些特定任务。有关更多信息，请参阅 [责任共担模式](how-run-cache.md#run-cache-srm)。



**注意**  
开始运行时，您需要提供 IAM 服务角色。要使用呼叫缓存，服务角色需要访问运行缓存 Amazon S3 位置的权限。有关更多信息，请参阅 [的服务角色 AWS HealthOmics](permissions-service.md)。

您可以使用 [Amazon Q CLI](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html) 来分析和管理您的运行缓存数据。有关更多信息，请参阅 [Amazon Q CLI 的示例提示](getting-started.md#omics-q-prompts)和上 GitHub的 A [HealthOmics gentic 生成人工智能教程](https://github.com/aws-samples/aws-healthomics-tutorials/tree/main/generative-ai)。

**Topics**
+ [使用控制台配置带有运行缓存的运行](#workflow-cache-startrun-console)
+ [使用 CLI 配置带有运行缓存的运行](#workflow-cache-startrun-api)
+ [运行缓存的错误案例](#workflow-cache-errors)
+ [跟踪呼叫缓存信息](#workflow-cache-track)

## 使用控制台配置带有运行缓存的运行
<a name="workflow-cache-startrun-console"></a>

在控制台中，您可以在开始运行时配置运行缓存。

1. 打开 [HealthOmics 控制台](https://console.aws.amazon.com/omics/)。

1.  如果需要，请打开左侧导航窗格 (►)。选择**运行**。

1. 在 “**运行**” 页面上，选择要启动的运行。

1. 选择 “**开始运行**”，然后按中所述完成 “**开始运行**” 的步骤 1 和 2 [使用控制台开始运行](starting-a-run.md#starting-a-run-console)。

1. 在 “**开始运行**” 的第 3 步中，选择 **“选择现有的运行缓存**”。

1. 从 “**运行缓存 ID” 下拉列表中选择缓存**。

1. 要覆盖默认的运行缓存行为，请为运行选择**缓存行为**。有关更多信息，请参阅 [运行缓存行为](how-run-cache.md#run-cache-behavior)。

1. 继续执行**开始运行**的步骤 4。

## 使用 CLI 配置带有运行缓存的运行
<a name="workflow-cache-startrun-api"></a>

**要启动使用运行缓存的运行，请在 start-run CLI 命令中添加 cache-id 参数。**或者，使用`cache-behavior`参数来覆盖您为运行缓存配置的默认行为。以下示例仅显示命令的缓存字段：

```
aws omics start-run \
        ...  
      --cache-id "xxxxxx"    \
      --cache-behavior  CACHE_ALWAYS
```

如果操作成功，您将收到不包含数据字段的响应。

## 运行缓存的错误案例
<a name="workflow-cache-errors"></a>

在以下情况下，即使在缓存行为设置为 “**始终缓存” 的情况下运行，也 HealthOmics 可能无法缓存**任务输出。
+ 如果在第一个任务成功完成之前运行遇到错误，则没有要导出的缓存输出。
+ 如果导出过程失败，则 HealthOmics 不会将任务输出保存到 Amazon S3 缓存位置。
+ 如果由于**filesystem out of space**错误而运行失败，则调用缓存不会保存任何任务输出。
+ 如果您取消运行，则呼叫缓存不会保存任何任务输出。
+ 如果运行出现运行超时，即使您将运行配置为在失败时使用缓存，调用缓存也不会保存任何任务输出。

## 跟踪呼叫缓存信息
<a name="workflow-cache-track"></a>

您可以使用控制台、CLI 或 CloudWatch 日志来跟踪呼叫缓存事件（例如运行缓存命中）。

**Topics**
+ [使用控制台跟踪缓存命中](#workflow-cache-track-console)
+ [使用 CLI 跟踪呼叫缓存](#workflow-cache-track-cli)
+ [使用 CloudWatch 日志跟踪呼叫缓存](#workflow-cache-track-cwl)

### 使用控制台跟踪缓存命中
<a name="workflow-cache-track-console"></a>

在运行的运行详细信息页面中，**运行任务**表显示每个任务的**缓存命中**信息。该表还包括指向关联缓存条目的链接。使用以下步骤查看某次运行的缓存命中信息。

1. 打开 [HealthOmics 控制台](https://console.aws.amazon.com/omics/)。

1.  如果需要，请打开左侧导航窗格 (►)。选择**运行**。

1. 在 “**运行**” 页面上，选择要检查的运行。

1. 在运行详细信息页面上，选择**运行任务**选项卡以显示任务表。

1. 如果任务有缓存命中，则缓**存命中**列包含指向 Amazon S3 中运行缓存条目位置的链接。

1. 选择链接以检查运行缓存条目。

### 使用 CLI 跟踪呼叫缓存
<a name="workflow-cache-track-cli"></a>

使用 **get-run CLI** 命令确认运行是否使用了呼叫缓存。

```
 aws omics get-run --id 1234567  
```

在响应中，如果设置了该`cacheId`字段，则运行将使用该缓存。

使用 **list-run-tasks**CLI 命令检索运行中每个缓存任务的缓存数据位置。

```
 aws omics list-run-tasks --id 1234567  
```

在响应中，如果任务的 cacheHit 字段为真，则 caches3uri 字段将提供该任务的缓存数据位置。

您也可以使用 **get-run-task**CLI 命令检索特定任务的缓存数据位置：

```
 aws omics get-run-task --id 1234567 --task-id <task_id> 
```

### 使用 CloudWatch 日志跟踪呼叫缓存
<a name="workflow-cache-track-cwl"></a>

HealthOmics 在日志组中创建缓存活动`/aws/omics/WorkflowLog` CloudWatch 日志。<cache\$1id><cache\$1uuid>每个运行缓存都有一个日志流：r **unCache//**。

对于使用呼叫缓存的运行， HealthOmics 会生成以下事件的 CloudWatch 日志条目：
+  创建缓存条目 (CACHE\$1ENTRY\$1CREATED)
+  匹配缓存条目 (CACHE\$1HIT) 
+  无法匹配缓存条目 (CACHE\$1MISS)

有关这些日志的更多信息，请参阅[登录 CloudWatch](monitoring-cloudwatch-logs.md#cloudwatch-logs)。

在`/aws/omics/WorkflowLog`日志组上使用以下 CloudWatch Insights 查询来返回此缓存每次运行的缓存命中数：

```
filter @logStream like 'runCache/<CACHE_ID>/'
 fields @timestamp, @message
 filter logMessage like 'CACHE_HIT'
 parse "run: *," as run
 stats count(*) as cacheHits by run
```

使用以下查询返回每次运行创建的缓存条目数：

```
filter @logStream like 'runCache/<CACHE_ID>/'
 fields @timestamp, @message
 filter logMessage like 'CACHE_ENTRY_CREATED'
 parse "run: *," as run
 stats count(*) as cacheEntries by run
```