

AWS Data Pipeline 不再向新客户提供。的现有客户 AWS Data Pipeline 可以继续照常使用该服务。[了解详情](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

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

# 查看管道日志
<a name="dp-viewing-logs"></a>

管道创建中支持管道级别的日志记录，其方法是在控制台中指定 Amazon S3 位置，或者使用开发工具包/CLI 的默认对象中的 `pipelineLogUri`。该 URI 中每个管道的目录结构类似于下文：

```
{{pipelineId}}
    -{{componentName}}
        -{{instanceId}}
            -{{attemptId}}
```

对于管道 `df-00123456ABC7DEF8HIJK`，目录结构如下所示：

```
df-00123456ABC7DEF8HIJK
    -ActivityId_fXNzc
        -@ActivityId_fXNzc_2014-05-01T00:00:00
            -@ActivityId_fXNzc_2014-05-01T00:00:00_Attempt=1
```

对于 `ShellCommandActivity`，与这些活动关联的 `stderr` 和 `stdout` 的日志存储在每次尝试的目录中。

对于类似于 `EmrCluster` 的资源，其中设置了 `emrLogUri`，该值优先。否则，资源（包括这些资源的 TaskRunner 日志）将遵循上述管道日志结构。

要查看给定管道运行的日志，请执行以下操作：

1. 通过调用 `query-objects` 获取确切的对象 ID 来检索 `ObjectId`。例如：

   ```
   aws datapipeline query-objects --pipeline-id <pipeline-id> --sphere ATTEMPT --region ap-northeast-1
   ```

   `query-objects` 是一个分页的 CLI，如果给定的 `pipeline-id` 执行次数更多，则可能会返回分页标记。您可以使用该标记完成所有尝试，直到找到预期的对象。例如，返回的结果 ObjectId 将如下所示：`@TableBackupActivity_2023-05-020T18:05:18_Attempt=1`。

1. 使用 ObjectId，使用以下方法检索日志位置：

   ```
   aws datapipeline describe-objects —pipeline-id <pipeline-id> --object-ids <object-id> --query "pipelineObjects[].fields[?key=='@logLocation'].stringValue"
   ```

**失败活动的错误消息**  
要获取错误消息，请先获取 us ObjectId ing `query-objects`。

检索失败的消息后 ObjectId，使用 `describe-objects` CLI 获取实际的错误消息。

```
aws datapipeline describe-objects --region ap-northeast-1 --pipeline-id <pipeline-id> --object-ids <object-id> --query "pipelineObjects[].fields[?key=='errorMessage'].stringValue"
```

**取消或重新运行对象或将对象标记为已完成**  
使用 `set-status` CLI 取消正在运行的对象，或者重新运行失败的对象或将正在运行的对象标记为已完成。

首先，使用 `query-objects` CLI 获取对象 ID。例如：

```
aws datapipeline query-objects --pipeline-id <pipeline-id> --sphere INSTANCE --region ap-northeast-1
```

使用 `set-status` CLI 更改所需对象的状态。例如：

```
aws datapipeline set-status —pipeline-id <pipeline-id> --region ap-northeast-1 --status TRY_CANCEL --object-ids <object-id>
```