

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

# Amazon AWS Transfer Family 服务器 CloudWatch 登录
CloudWatch 日志记录

Amazon CloudWatch 是一项强大的监控和可观察性服务，可让您全面了解您的 AWS 资源，包括 AWS Transfer Family。
+ 实时监控：实时 CloudWatch 监控 Transfer Family 资源和应用程序，允许您跟踪和分析其性能。
+ 指标收集： CloudWatch 收集和跟踪您的资源和应用程序的各种指标，这些指标是您可以衡量和用于分析的变量。
+ CloudWatch 主页：主页会自动显示有关您使用的Transfer Family和其他 AWS 服务的指标，从而集中查看您的监控数据。 CloudWatch 
+ 自定义仪表板：您可以在中创建自定义仪表板， CloudWatch 以显示特定于您的自定义应用程序和您选择监控的资源的指标。
+ 警报和通知： CloudWatch 允许您创建警报，以监控您的指标，并在突破特定阈值时触发通知或自动操作。这对于监控 Transfer Family 服务器中的文件传输活动并相应地扩展资源非常有用。
+ 成本优化：您可以使用收集的数据 CloudWatch 来识别未充分利用的资源，并采取措施（例如停止或删除实例）来优化成本。

总体而言，其中的全面监控功能 CloudWatch 使其成为管理和优化 Transfer Family 基础架构及其上运行的应用程序的宝贵工具。

有关 CloudWatch 登录 Transfer Family 网络应用程序的详细信息，请参阅[CloudTrail 登录 Transfer Family 网络应用程序](webapp-cloudtrail.md)。

## Transfer Family 的 CloudWatch 登录类型


Transfer Family 提供了两种记录事件的方法 CloudWatch：
+ JSON 结构化日志记录
+ 通过日志记录角色进行登录

对于 Transfer Family 服务器，你可以选择自己喜欢的日志机制。对于连接器和工作流程，仅支持日志记录角色。

**JSON 结构化记录**

要记录服务器事件，我们建议使用 JSON 结构化日志记录。这提供了一种更全面的日志格式，可以进行 CloudWatch 日志查询。对于此类日志记录，创建服务器（或编辑服务器的日志配置）的用户的 IAM 策略必须包含以下权限：
+ `logs:CreateLogDelivery`
+ `logs:DeleteLogDelivery`
+ `logs:DescribeLogGroups`
+ `logs:DescribeResourcePolicies`
+ `logs:GetLogDelivery`
+ `logs:ListLogDeliveries`
+ `logs:PutResourcePolicy`
+ `logs:UpdateLogDelivery`

以下是示例策略。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:GetLogDelivery",
                "logs:UpdateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:ListLogDeliveries",
                "logs:PutResourcePolicy",
                "logs:DescribeResourcePolicies",
                "logs:DescribeLogGroups"                
            ],
            "Resource": "*"
        }
    ]
}
```

有关设置 JSON 结构化日志记录的详细信息，请参阅[创建、更新和查看服务器的日志记录](log-server-manage.md)。

**日志角色**

要记录连接到服务器的托管工作流程以及连接器的事件，您需要指定日志记录角色。要设置访问权限，您需要创建一个基于资源的 IAM 策略和一个提供该访问信息的 IAM 角色。以下是可以记录服务器事件 AWS 账户 的策略示例。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:DescribeLogStreams",
                "logs:CreateLogGroup",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/transfer/*"
        }
    ]
}
```

有关配置日志记录角色以记录工作流程事件的详细信息，请参阅[管理工作流程的日志记录](cloudwatch-workflows.md)。

# 创建、更新和查看服务器的日志记录
为服务器创建日志

对于所有 AWS Transfer Family 服务器，我们都提供结构化日志记录。我们建议您对所有新的和现有的 Transfer Family 服务器使用结构化日志记录。使用结构化日志的好处包括以下几点：
+ 接收结构化 JSON 格式的日志。
+ 使用 Amazon Logs Insights 查询您的 CloudWatch 日志，它会自动发现 JSON 格式的字段。
+ 跨 AWS Transfer Family 资源共享日志组允许您将来自多个服务器的日志流合并到一个日志组中，从而更轻松地管理监控配置和日志保留设置。
+ 创建可添加到 CloudWatch仪表板的聚合指标和可视化效果。
+ 使用日志组创建整合的日志指标、可视化效果和控制面板，从而跟踪使用情况和性能数据。

要为连接到服务器的工作流程启用日志记录，必须使用日志记录角色。

**注意**  
添加日志记录角色时，日志组始终处于状态`/aws/transfer/your-serverID`，并且无法更改。这意味着，除非您将结构化服务器日志发送到同一个组，否则您将登录到两个不同的日志组。  
如果您知道要将工作流程与服务器关联，因此需要添加日志记录角色，则可以设置结构化日志记录以记录到默认日志组`/aws/transfer/your-serverID`。  
要修改您的日志组，请参阅 *AWS Transfer Family API 参考[StructuredLogDestinations](https://docs.aws.amazon.com/transfer/latest/APIReference/API_UpdateServer.html#TransferFamily-UpdateServer-request-StructuredLogDestinations)*中的。

如果使用 Transfer Family 控制台创建新的服务器，将默认启用日志记录。创建服务器后，您可以使用 `UpdateServer` API 操作来更改日志配置。有关更多信息，请参阅 [StructuredLogDestinations](https://docs.aws.amazon.com/transfer/latest/APIReference/API_UpdateServer.html#TransferFamily-UpdateServer-request-StructuredLogDestinations)。

目前，对于工作流程，如果要启用日志记录，则必须指定日志记录角色：
+ 如果您使用`CreateServer`或 `UpdateServer` API 操作将工作流与服务器关联，则系统不会自动创建日志记录角色。如果要记录工作流程事件，则需要将日志记录角色显式附加到服务器。
+ 如果您使用 Transfer Family 控制台创建服务器并附加工作流程，则日志将发送到名称中包含服务器 ID 的日志组。格式为 `/aws/transfer/server-id`，例如 `/aws/transfer/s-1111aaaa2222bbbb3`。服务器日志可以发送到同一个日志组或另一个日志组。

**在控制台中创建和编辑服务器的日志记录注意事项**
+ 除非将工作流程附加到服务器，否则通过控制台创建的新服务器仅支持结构化 JSON 日志记录。
+ *无日志记录*不是您在控制台中创建的新服务器的选项。
+ 现有服务器可以随时通过控制台启用结构化 JSON 日志记录。
+ 通过控制台启用结构化 JSON 日志记录会禁用现有的日志记录方法，以免向客户重复收费。如果将工作流程附加到服务器，则例外。
+ 如果启用结构化 JSON 日志记录，则以后无法通过控制台将其禁用。
+ 如果启用结构化 JSON 日志记录，则可以随时通过控制台更改日志组目标。
+ 如果启用结构化 JSON 日志记录，则如果通过 API 启用了两种日志记录类型，则无法通过控制台编辑日志记录角色。如果服务器已附加工作流程，则例外。但是，日志记录角色会继续出现在**其他详细信息**中。

**使用 API 或 SDK 创建和编辑服务器的日志记录注意事项**
+ 如果您通过 API 创建新服务器，则可以配置其中一种或两种类型的日志记录，或者选择不记录日志。
+ 对于现有服务器，可以随时启用和禁用结构化 JSON 日志记录。
+ 您可以随时通过 API 更改日志组。
+ 您可以随时通过 API 更改日志记录角色。

**若要启用结构化日志记录，您必须登录到具有以下权限的账户**
+ `logs:CreateLogDelivery`
+ `logs:DeleteLogDelivery`
+ `logs:DescribeLogGroups`
+ `logs:DescribeResourcePolicies`
+ `logs:GetLogDelivery`
+ `logs:ListLogDeliveries`
+ `logs:PutResourcePolicy`
+ `logs:UpdateLogDelivery`

该部分提供了策略示例[配置 CloudWatch 日志记录角色](configure-cw-logging-role.md)。

**Topics**
+ [

## 为服务器创建日志
](#log-server-create)
+ [

## 更新服务器的日志记录
](#log-server-update)
+ [

## 查看服务器配置
](#log-server-config)

## 为服务器创建日志


创建新服务器时，可以在**配置其他详细信息**页面上指定现有日志组或创建新日志组。

![\[在创建服务器向导中配置其他详细信息的日志记录窗格。选择“选择现有日志组”。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/logging-server-choose-existing-group.png)


如果选择**创建日志组**，则 CloudWatch 控制台 ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) 将打开**创建日志组**页面。有关详细信息，请参阅[在 Log CloudWatch s 中创建日志组](https://docs.aws.amazon.com//AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#Create-Log-Group)。

## 更新服务器的日志记录


日志记录的详细信息取决于您的更新场景。

**注意**  
当您选择使用结构化 JSON 日志记录时，在极少数情况下，Transfer Family 会停止使用旧格式进行日志记录，但需要一些时间才能开始使用新的 JSON 格式进行日志记录。这可能会导致事件不被记录。不会出现任何服务中断，但是在更改日志记录方法后的第一个小时内，您应该谨慎传输文件，因为日志可能会被丢弃。

如果您正在编辑现有服务器，则选项取决于服务器的状态。
+ 服务器已启用日志记录角色，但未启用结构化 JSON 日志记录。  
![\[日志窗格显示了现有的日志记录角色。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/logging-server-choose-role.png)
+ 服务器未启用任何日志记录。  
![\[如果服务器未启用任何日志记录，则显示日志记录窗格。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/logging-server-edit-none.png)
+ 服务器已启用结构化 JSON 日志记录，但未指定日志记录角色。  
![\[如果服务器尚未启用日志记录，则显示日志记录窗格。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/logging-server-edit-add-json-02.png)
+ 服务器已启用结构化 JSON 日志记录，且已指定日志记录角色。  
![\[如果服务器启用了结构化日志记录，并且还指定了日志记录角色，则显示日志记录窗格。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/logging-server-edit-both.png)

## 查看服务器配置


服务器配置页面的详细信息取决于您的场景：

根据您的场景，服务器配置页面可能类似于以下示例之一：
+ 无日志记录已启用。  
![\[未配置日志记录的日志记录配置。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/logging-server-config-none.png)
+ 已启用结构化 JSON 日志记录。  
![\[已配置结构化日志记录的日志记录配置。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/logging-server-config-structured.png)
+ 日志记录角色已启用，但未启用结构化 JSON 日志记录。  
![\[已配置日志记录角色的日志记录配置。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/logging-server-config-legacy.png)
+ 两种类型的日志记录（日志记录角色和结构化 JSON 日志记录）均已启用。  
![\[已配置两种日志类型（日志记录角色和结构化 JSON 日志记录）的日志记录配置。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/logging-server-config-both.png)

# 管理工作流程的日志记录


CloudWatch 为工作流程进度和结果提供统一的审计和日志记录。此外，还为工作流程 AWS Transfer Family 提供了多个指标。您可以查看前一分钟有多少工作流程执行启动、成功完成和失败的指标。中描述了 Transfer Family 的所有 CloudWatch 指标[使用 T CloudWatch ransfer Family 服务器的指标](metrics.md)。

**查看 Amazon 工作流程 CloudWatch 日志**

1. 打开 Amazon CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在左侧导航窗格中选择**日志**，然后选择**日志组**。

1. 在**日志组**页面的导航栏上，为您的 AWS Transfer Family 服务器选择正确的区域。

1. 选择与您的服务器相对应的日志组。

   例如，如果您的服务器 ID 是 `s-1234567890abcdef0`，则您的日志组是 `/aws/transfer/s-1234567890abcdef0`。

1. 在服务器的日志组详细信息页面上，将显示最新的日志流。您正在探索的用户有两个日志流：
   + 每个 Secure Shell (SSH) 文件传输协议 (SFTP) 会话一个。
   + 一个用于正在为您的服务器执行的工作流程。工作流程的日志流格式为 `username.workflowID.uniqueStreamSuffix`。

   例如，如果您的用户是 `mary-major`，您具有以下日志流：

   ```
   mary-major-east.1234567890abcdef0
   mary.w-abcdef01234567890.021345abcdef6789
   ```
**注意**  
 此示例中列出的 16 位字母数字标识符是虚构的。您在 Amazon 上看到 CloudWatch 的值不同。

`mary-major-usa-east.1234567890abcdef0` 的“**日志事件**”页面显示每个用户会话的详细信息，`mary.w-abcdef01234567890.021345abcdef6789` 日志流包含工作流程的详细信息。

 以下是基于包含复制步骤的工作流程 (`w-abcdef01234567890`) 的 `mary.w-abcdef01234567890.021345abcdef6789` 日志流示例。

```
{
    "type": "ExecutionStarted",
    "details": {
        "input": {
            "initialFileLocation": {
                "bucket": "amzn-s3-demo-bucket",
                "key": "mary/workflowSteps2.json",
                "versionId": "version-id",
                "etag": "etag-id"
            }
        }
    },
    "workflowId":"w-abcdef01234567890",
    "executionId":"execution-id",
    "transferDetails": {
        "serverId":"s-server-id",
        "username":"mary",
        "sessionId":"session-id"
    }
},
{
    "type":"StepStarted",
    "details": {
        "input": {
            "fileLocation": {
                "backingStore":"S3",
                "bucket":"amzn-s3-demo-bucket",
                "key":"mary/workflowSteps2.json",
                "versionId":"version-id",
                "etag":"etag-id"
            }
        },
        "stepType":"COPY",
        "stepName":"copyToShared"
    },
    "workflowId":"w-abcdef01234567890",
    "executionId":"execution-id",
    "transferDetails": {
        "serverId":"s-server-id",
        "username":"mary",
        "sessionId":"session-id"
    }
},
{
    "type":"StepCompleted",
    "details":{
        "output":{},
        "stepType":"COPY",
        "stepName":"copyToShared"
    },
    "workflowId":"w-abcdef01234567890",
    "executionId":"execution-id",
    "transferDetails":{
        "serverId":"server-id",
        "username":"mary",
        "sessionId":"session-id"
    }
},
{
    "type":"ExecutionCompleted",
    "details": {},
    "workflowId":"w-abcdef01234567890",
    "executionId":"execution-id",
    "transferDetails":{
        "serverId":"s-server-id",
        "username":"mary",
        "sessionId":"session-id"
    }
}
```

# 配置 CloudWatch 日志记录角色
为配置角色 CloudWatch

要设置访问权限，您需要创建一个基于资源的 IAM 策略和一个提供该访问信息的 IAM 角色。

要启用 Amazon CloudWatch 日志记录，首先要创建启用 CloudWatch日志记录的 IAM 策略。然后，您需要创建一个 IAM 角色并将策略附加到该角色。您可在[创建服务器](getting-started.md#getting-started-server)或[编辑现有服务器](edit-server-config.md)时执行此操作。有关的更多信息 CloudWatch，请参阅 [Amazon 是什么 CloudWatch？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 以及[什么是 Amazon CloudWatch 日志？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 在《*亚马逊 CloudWatch 用户指南》*中。

使用以下 IAM 策略示例来允许 CloudWatch 日志记录。

------
#### [ Use a logging role ]

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:DescribeLogStreams",
                "logs:CreateLogGroup",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/transfer/*"
        }
    ]
}
```

------
#### [ Use structured logging ]

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:GetLogDelivery",
                "logs:UpdateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:ListLogDeliveries",
                "logs:PutResourcePolicy",
                "logs:DescribeResourcePolicies",
                "logs:DescribeLogGroups"                
            ],
            "Resource": "*"
        }
    ]
}
```

在前面的示例策略中，对于**Resource**，将*region-id*和*AWS 账户*替换为您的值。例如，**"Resource": "arn:aws::logs:us-east-1:111122223333:log-group:/aws/transfer/\$1"**

------

然后，您可以创建一个角色并附加您创建的 CloudWatch 日志策略。

**创建 IAM 角色并附加策略**

1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

   在**创建角色**页面上，确保已选择**AWS 服务**。

1. 从服务列表中选择**转移**，然后选择**下一步：权限**。这将在和 IAM 角色 AWS Transfer Family 之间建立信任关系。此外，建议使用 `aws:SourceAccount` 和 `aws:SourceArn` 条件键来防止出现*混淆代理*问题。有关详细信息，请参阅以下文档：
   + 与以下机构建立信任关系的程序 AWS Transfer Family：[建立信任关系](requirements-roles.md#establish-trust-transfer)
   + 混淆代理问题描述：[混淆代理问题](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)

1. 在**附加权限策略**部分，找到并选择您刚刚创建的 CloudWatch 日志策略，然后选择**下一步：标签**。

1. （可选）输入标签的键和值，然后选择**下一步：审核**。

1. 在**审核**页面上，输入新角色的名称和描述，然后选择**创建角色**。

1. 要查看日志，请选择**服务器 ID** 以打开服务器配置页面，然后选择**查看日志**。您将被重定向到 CloudWatch 控制台，您可以在其中查看日志流。

在服务器 CloudWatch 页面上，您可以看到用户身份验证（成功和失败）、数据上传（`PUT`操作）和数据下载（`GET`操作）的记录。

# 查看 Transfer Family 日志流


**若要查看您的 Transfer Family 服务器日志**

1. 导航到您的服务器详细信息页面。

1. 选择**查看日志**。这将打开 Amazon CloudWatch。

1. 将显示选定服务器的日志组。  
![\[\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/log-example-01.png)

1. 您可以选择一项日志流，显示该流数据的详细信息和单个条目。
   + 如果列出了**错误**，则可以选择它，以查看服务器最新错误的详细信息。  
![\[\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/log-example-errors.png)
   + 选择任何其他条目，以查看日志流示例。  
![\[\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/log-example-02.png)
   + 如果您的服务器配备与之关联的托管工作流程，则可以查看工作流程运行日志。
**注意**  
工作流程的日志流格式为 `username.workflowId.uniqueStreamSuffix`。例如：对于日志流名称 **decrypt-user.w-a1111222233334444.aaaa1111bbbb2222**，其用户为 **decrypt-user**，工作流程为 **w-a1111222233334444**。  
![\[\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/log-example-workflow.png)

**注意**  
对于任何展开的日志条目，您可以通过选择**复制**将该条目复制到剪贴板。有关 CloudWatch 日志的更多详细信息，请参阅[查看日志数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#ViewingLogData)。

## 创建亚马逊 CloudWatch 警报


以下示例展示了如何使用 AWS Transfer Family 指标创建 Amazon CloudWatch 警报`FilesIn`。

------
#### [ CDK ]

```
new cloudwatch.Metric({
  namespace: "AWS/Transfer",
  metricName: "FilesIn",
  dimensionsMap: { ServerId: "s-00000000000000000" },
  statistic: "Average",
  period: cdk.Duration.minutes(1),
}).createAlarm(this, "AWS/Transfer FilesIn", {
  threshold: 1000,
  evaluationPeriods: 10,
  datapointsToAlarm: 5,
  comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
});
```

------
#### [ CloudFormation ]

```
Type: AWS::CloudWatch::Alarm
Properties:
  Namespace: AWS/Transfer
  MetricName: FilesIn
  Dimensions:
    - Name: ServerId
      Value: s-00000000000000000
  Statistic: Average
  Period: 60
  Threshold: 1000
  EvaluationPeriods: 10
  DatapointsToAlarm: 5
  ComparisonOperator: GreaterThanOrEqualToThreshold
```

------

## 将 Amazon S3 API 操作记录到 S3 访问日志中
将 S3 API 调用记录到 S3 访问日志

**注意**  
本节不适用于 Transfer Family 网络应用程序。

如果您[使用 Amazon S3 访问日志识别代表文件传输用户提出的 S3 请求](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-s3-access-logs-to-identify-requests.html)，则使用 `RoleSessionName` 显示被假定为提供文件传输提供服务的 IAM 角色。它还显示其他信息，例如用于传输的用户名、会话 ID 以及服务器 ID。格式为 `[AWS:Role Unique Identifier]/username.sessionid@server-id`，且包含在 “请求者” 字段中。例如，以下是来自 S3 访问日志的、用于复制到 S3 存储桶中的“请求者”字段示例内容。

`arn:aws:sts::AWS-Account-ID:assumed-role/IamRoleName/username.sessionid@server-id`

在上述中“请求者”字段中，它显示了名为 `IamRoleName` 的 IAM 角色。有关唯一标识符的更多信息，请参阅 *AWS Identity and Access Management 用户指南*中的 [IAM 标识符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids)。

# 混淆代理问题限制示例


混淆代理问题是一个安全性问题，即不具有某操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在中 AWS，跨服务模仿可能会导致混乱的副手问题。有关更多详细信息，请参阅[防止跨服务混淆代理](confused-deputy.md)。

**注意**  
在以下示例中，用您自己的信息替换每个*user input placeholder*示例。  
在这些示例中，如果您的服务器未附加任何工作流程，则可以删除工作流程的 ARN 详细信息。

以下示例 logging/invocation 策略允许账户中的任何服务器（和工作流程）代入该角色。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAllServersWithWorkflowAttached",
            "Effect": "Allow",
            "Principal": {
                "Service": "transfer.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                   "aws:SourceArn": [
                     "arn:aws:transfer:us-west-2:111122223333:server/*",
                     "arn:aws:transfer:us-west-2:111122223333:workflow/*"
                   ]
                }
            }
        }
    ]
}
```

以下示例 logging/invocation 策略允许特定的服务器（和工作流程）担任该角色。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSpecificServerWithWorkflowAttached",
            "Effect": "Allow",
            "Principal": {
                "Service": "transfer.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnEquals": {
                   "aws:SourceArn": [
                       "arn:aws:transfer:us-west-2:111122223333:server/server-id",
                       "arn:aws:transfer:us-west-2:111122223333:workflow/workflow-id"
                   ]
                }
            }
        }
    ]
}
```

# CloudWatch Transfer Family 的日志结构


本主题介绍了 Transfer Family 日志中填充的字段：包括 JSON 结构化日志条目和旧日志条目。

**Topics**
+ [

## Transfer Family 的 JSON 结构化
](#json-log-entries)
+ [

## Transfer Family 的旧日志
](#legacy-log-entries)

## Transfer Family 的 JSON 结构化


下表以新的 JSON 结构化日志格式包含 Transfer Family SFTP/FTP/FTPS 操作的日志条目字段的详细信息。


| 字段 | 描述 | 示例条目 | 
| --- |--- |--- |
| 活动类型 | 用户的操作 | 可用的活动类型如下：`AUTH_FAILURE`、、、、`CONNECTED`、`DISCONNECTED`、、`ERROR`、`EXIT_REASON`、`CLOSE`、`CREATE_SYMLINK`、`DELETE`、`MKDIR`、`OPEN`、`PARTIAL_CLOSE`、、`RENAME`、`RMDIR`、`SETSTAT`、`TLS_RESUME_FAILURE`。 | 
| bytes-in | 用户上传的字节数 | 29238420042 | 
| bytes-out | 用户下载的字节数 | 23094032490328 | 
| ciphers | 指定为连接协商的 SSH 密码（中列出了可用密码）[加密算法](security-policies.md#cryptographic-algorithms) | aes256-gcm@openssh.com | 
| 客户端 | 用户的客户端软件 | ssh-2.0-openssh\$17.4 | 
| 主页目录 | 如果最终用户的主目录类型为：如果他们的主目录类型为PATH：如果他们有逻辑主目录，则此值始终为 / | /user-home-bucket/test | 
| kex | 为连接指定协商的 SSH 密钥交换 (KEX)（中列出了可用的 KEX[加密算法](security-policies.md#cryptographic-algorithms)） | diffie-hellman-group14-sha256 | 
| message | 提供与错误相关的更多信息 | <string> | 
| method | 身份验证方法 | publickey | 
| mode | 指定客户端如何打开文件 | 创建 \$1 截断 \$1 写入 | 
| operation | 客户机对文件的操作 | 打开 \$1 关闭 | 
| path | 实际文件路径受到影响 | /amzn-s3-demo-bucket/test-file-1.pdf  | 
| ssh-public-key | 正在连接的用户的公钥正文 | AAAAC3nzac1L oy0qv6 Oi ZDI1 NTE5 AAAAIA9 XYVHaa WAcj2sp DJVbgjrq DPY4pxd6 GnHl | 
| ssh-public-key-fingerprint | 公钥指纹，如服务托管用户列出用户密钥时的控制台中所示。  在控制台中，显示的指纹末尾带有填充字符（如果有）：从 0 到 3 个等号 (=)。在日志条目中，此填充已从输出中去除。  | SHA256: BY3g NMHw tfjd4n2vut4pty /0 LOk82z WZj4 KEYEu7y4r | 
| ssh-public-key-type | 公钥类型：Transfer Family 支持 RSA、ECDSA 和-格式的密钥 ED25519 | ssh-ed25519 | 
| resource-arn | 系统为特定资源（例如服务器）分配的唯一标识符 |  arn: aws: transfer: ap-northeast-1:12346789012: server/s-1234567890akeu2js2  | 
| 角色 | 用户的 IAM 角色 |  arn: aws: iam:: 0293883675: 角色/测试用户角色  | 
| session-id | 系统为单个会话分配的唯一标识符 |  9ca9a0e1cec6ad9d  | 
| 来源 IP | 客户端 IP 地址 | 18.323.0.129 | 
| 用户 | 最终用户的用户名 | myname192 | 
| 用户政策 | 为最终用户指定的权限：如果用户的策略是会话策略，则填充此字段。 | 正在使用的会话策略的 JSON 代码 | 

## Transfer Family 的旧日志


下表包含各种 Transfer Family 操作的日志条目的详细信息。

**注意**  
 这些条目不是采用新的 JSON 结构化日志格式。

下表以新的 JSON 结构化日志格式包含各种 Transfer Family 操作的日志条目的详细信息。




| 操作 | Amazon 日志中的相应 CloudWatch 日志 | 
| --- | --- | 
| 身份验证失败次数 |  错误 auth\$1FAILURE method=publickey user=lhr message= “rsa: lfz3r2nm k\$1b7rb1rsv ae\$1a\$1hxg0c7l1jiz0" sourceip=3.8.172.211 SHA256 LY4ra UIb   | 
| COPY/TAG/DELETE/DECRYPT 工作流 |  \$1“type”:” “，” details”：\$1“input”：\$1StepStarted“fileLocation”：\$1“backingStore”: “EFS”、“Filesystemid”: “fs-12345678”、“path”:” /lhr/regex.py “\$1”\$1、“stepType”: “TAG”、“stepName”: “successful\$1tag\$1step”\$1、“workflowID”: “workflowID”: “workflowID”: “workflowID”: “workflowID”: “workF11aaaa2222bbb3"、“executionID”: “81234abcd-1234-efgh-5678-ijklmnopqr90"、“TransferDetails”: \$1“serverID”: “s-1234abcdef5678efghi”、“用户名”: “lhr”、“sessionID”: “1234567890abcdef0"\$1\$1  | 
| 自定义步骤工作流程 |  \$1“type”:” “，” details”：\$1“输出”：\$1“token”: CustomStepInvoked “mzm4mjg5 M YWUt YTEz y00 yzu YjIz LWI3 OGMt 4 E5"\$1、“stepType”: “自定义”、“stepName”: “efs-s3\$1copy\$12"\$1、“workflowID”: “w-9283e49d33297c3f7”、“executionID”: “OGI2ZjQyMz12bactionID”: “w-9283e49d33297c3f7”: “executionId”: “121234abcd-1234-efgh-5678-ijklmnopqr90"，“TransferDetails”：\$1“serverID”: “s-zzzz11aaaa222223"、“用户名”: “lhr”、“sessionID”: “1234567890abcdef0"\$1\$1  | 
| 删除 |  lhr.33a8fb495ffb383b 删除 /123.jpg Path=/bucket/user  | 
| Downloads |  lhr.33a8fb495ffb383b OPEN /123.jpg mode=Read Path=/bucket/user llhr.33a8fb495ffb383b 关闭 /123.jpg =3618546 Path=/bucket/user BytesOut  | 
| 登录/登出 |  user.914984e553bcddb6 CONNECTED SourceIP=1.22.111.222 user=LOGICAL client=ssh-2.0-openssh\$17.4 role=arn: aws:: iam:: 123456789012: role/sftp-s3-access HomeDir user.914984e553bcddb6 DISCONNECTED  | 
| 重命名 |  lhr.33a8fb495ffb383b 重命名.png Path=/bucket/user/lambo.png NewPath=/bucket/user/ferrari   | 
| 工作流程错误日志示例 |  \$1“type”:” “，” details”：\$1“errorType”：StepErrored“BAD\$1REQUEST”，“ErrorMessage”：“无法标记 Efs 文件”，“stepType”：“TAG”，“stepName”：“successful\$1tag\$1step”\$1，“w-1234abcd5678efghi”，“executionID”：“81234abcd5678efghi”：“81234abcd5678efghi”：“81234abcd5678efghi”：“8cd-1234-efgh-5678-ijklmnopqr90"，“TransferDetails”：\$1“serverID”: “s-1234abcd5678efghi”、“用户名”: “lhr”、“sessionID”: “1234567890abcdef0"\$1\$1   | 
| symlinks |  lhr.eb49cf7b8651e6d5 CREATE\$1SYMLINK =/fs-12345678/lhr/pqr.jpg =abc.jpg =abc.jpg LinkPath TargetPath   | 
| Uploads |  lhr.33a8fb495ffb383b OPEN /123.jpg mode=create\$1truncate\$1Write Path=/bucket/user lhr.33a8fb495ffb383b 关闭 /123.jpg =3618546 Path=/bucket/user BytesIn  | 
| 工作流 |  \$1“type”:” “，” details”：\$1“input”：\$1ExecutionStarted“backingStore”: “EFS”、“Filesystemid”: “fs-12345678”、“path”:” /lhr/regex.py “\$1\$1\$1、initialFileLocation “workflowID”: “w-1111aaaa2222bbbb3”、“executionID”: “1234abcd-1234-efbbid”: “w-11aaaa2222bbbb3”、“executionID”: “1234abcd-1234-efbbid”: “w-11aaaa22gh-5678-ijklmnopqr90"，“TransferDetails”：\$1“serverID”: “s-zzzz1111aaaa222223"、“用户名”: “lhr”、“sessionID”: “1234567890abcdef0"\$1\$1 \$1“type”:” “，” details”：\$1“input”：\$1StepStarted“fileLocation”：\$1“backingStore”: “EFS”、“Filesystemid”: “fs-12345678”、“path”:” /lhr/regex.py “\$1\$1、“stepType”: “CUSTOM”、“stepName”: “efs-s3\$1copy\$12"\$1、“workflowID”: “workflowID”: “workflowID”: “workflowID”: “9283e49d33297c3f7"、“executionID”: “1234abcd-1234-efgh-5678-ijklmnopqr90"、“TransferDetails”: \$1“serverID”: “s-18ca49dce5d842e0b”、“用户名”: “lhr”、“sessionID”: “1234567890abb”、“用户名”: “lhr”、“sessionID”: “1234567890aba” cdef0"\$1\$1  | 

# CloudWatch 日志条目示例


本主题介绍示例日志条目。

**Topics**
+ [

## 传输会话日志条目示例
](#session-log-examples)
+ [

## SFTP 连接器的日志条目示例
](#example-sftp-connector-logs)
+ [

## VPC Lattice 连接器的日志条目示例
](#example-vpc-lattice-connector-logs)
+ [

## 密钥交换算法失败的日志条目示例
](#example-kex-logs)

## 传输会话日志条目示例


在此示例中，SFTP 用户连接到 Transfer Family 服务器，上传文件，然后断开与会话的连接。

以下日志条目反映了连接到 Transfer Family 服务器的 SFTP 用户。

```
{
   "role": "arn:aws:iam::500655546075:role/transfer-s3",
   "activity-type": "CONNECTED",
   "ciphers": "chacha20-poly1305@openssh.com,chacha20-poly1305@openssh.com",
   "client": "SSH-2.0-OpenSSH_7.4",
   "source-ip": "52.94.133.133",
   "resource-arn": "arn:aws:transfer:us-east-1:500655546075:server/s-3fe215d89f074ed2a",
   "home-dir": "/test/log-me",
   "ssh-public-key": "AAAAC3NzaC1lZDI1NTE5AAAAIA9OY0qV6XYVHaaOiWAcj2spDJVbgjrqDPY4pxd6GnHl",
   "ssh-public-key-fingerprint": "SHA256:BY3gNMHwTfjd4n2VuT4pTyLOk82zWZj4KEYEu7y4r/0",
   "ssh-public-key-type": "ssh-ed25519",
   "user": "log-me",
   "kex": "ecdh-sha2-nistp256",
   "session-id": "9ca9a0e1cec6ad9d"
}
```

以下日志条目反映了 SFTP 用户将文件上传到其 Amazon S3 存储桶的情况。

```
{
   "mode": "CREATE|TRUNCATE|WRITE",
   "path": "/test/log-me/config-file",
   "activity-type": "OPEN",
   "resource-arn": "arn:aws:transfer:us-east-1:500655546075:server/s-3fe215d89f074ed2a",
   "session-id": "9ca9a0e1cec6ad9d"
}
```

以下日志条目反映了 SFTP 用户与 SFTP 会话断开连接的情况。首先，客户端关闭与存储桶的连接，然后断开 SFTP 会话。

```
{
   "path": "/test/log-me/config-file",
   "activity-type": "CLOSE",
   "resource-arn": "arn:aws:transfer:us-east-1:500655546075:server/s-3fe215d89f074ed2a",
   "bytes-in": "121",
   "session-id": "9ca9a0e1cec6ad9d"
}

{
   "activity-type": "DISCONNECTED",
   "resource-arn": "arn:aws:transfer:us-east-1:500655546075:server/s-3fe215d89f074ed2a",
   "session-id": "9ca9a0e1cec6ad9d"
}
```

**注意**  
可用的活动类型如下：`AUTH_FAILURE`、、、、`CONNECTED`、`DISCONNECTED`、`ERROR`、`EXIT_REASON`、`CLOSE`、`CREATE_SYMLINK`、`DELETE`、`MKDIR`、、`OPEN`、`PARTIAL_CLOSE`、`RENAME`、`RMDIR`、`SETSTAT`、`TLS_RESUME_FAILURE`。

## SFTP 连接器的日志条目示例


本节包含成功和不成功传输的示例日志。日志生成到名为的日志组`/aws/transfer/connector-id`，其中*connector-id*是 SFTP 连接器的标识符。SFTP 连接器的日志条目是在运行`StartFileTransfer`或`StartDirectoryListing`命令时生成的。

此日志条目适用于成功完成的传输。

```
{
    "operation": "RETRIEVE",
    "timestamp": "2023-10-25T16:33:27.373720Z",
    "connector-id": "connector-id",
    "transfer-id": "transfer-id",
    "file-transfer-id": "transfer-id/file-transfer-id",
    "url": "sftp://192.0.2.0",
    "file-path": "/remotebucket/remotefilepath",
    "status-code": "COMPLETED",
    "start-time": "2023-10-25T16:33:26.945481Z",
    "end-time": "2023-10-25T16:33:27.159823Z",
    "account-id": "480351544584",
    "connector-arn": "arn:aws:transfer:us-east-1:account-id:connector/connector-id",
    "local-directory-path": "/connectors-localbucket",
    "bytes": 514,
    "egress-type": "SERVICE_MANAGED"
}
```

此日志条目适用于超时但未成功完成的传输。

```
{
    "operation": "RETRIEVE",
    "timestamp": "2023-10-25T22:33:47.625703Z",
    "connector-id": "connector-id",
    "transfer-id": "transfer-id",
    "file-transfer-id": "transfer-id/file-transfer-id",
    "url": "sftp://192.0.2.0",
    "file-path": "/remotebucket/remotefilepath",
    "status-code": "FAILED",
    "failure-code": "TIMEOUT_ERROR",
    "failure-message": "Transfer request timeout.",
    "account-id": "480351544584",
    "connector-arn": "arn:aws:transfer:us-east-1:account-id:connector/connector-id",
    "local-directory-path": "/connectors-localbucket",
    "egress-type": "SERVICE_MANAGED"
}
```

此日志条目用于成功执行的 SEND 操作。

```
{
    "operation": "SEND",
    "timestamp": "2024-04-24T18:16:12.513207284Z",
    "connector-id": "connector-id",
    "transfer-id": "transfer-id",
    "file-transfer-id": "transfer-id/file-transfer-id",
    "url": "sftp://server-id.server.transfer.us-east-1.amazonaws.com",
    "file-path": "/amzn-s3-demo-bucket/my-test-folder/connector-metrics-us-east-1-2024-01-02.csv",
    "status-code": "COMPLETED",
    "start-time": "2024-04-24T18:16:12.295235884Z",
    "end-time": "2024-04-24T18:16:12.461840732Z",
    "account-id": "255443218509",
    "connector-arn": "arn:aws:transfer:us-east-1:account-id:connector/connector-id",
    "bytes": 275,
    "egress-type": "SERVICE_MANAGED"
}
```

前面日志示例中一些关键字段的描述。
+ `timestamp`表示何时将日志添加到 CloudWatch。 `start-time`并`end-time`对应于连接器实际开始和完成传输的时间。
+ `transfer-id`是为每个`start-file-transfer`请求分配的唯一标识符。如果用户在单个 `start-file-transfer` API 操作中传递多个文件路径，则所有文件共享相同的路径`transfer-id`。
+ `file-transfer-id`是为每个传输的文件生成的唯一值。请注意，的初始`file-transfer-id`部分与相同`transfer-id`。

## VPC Lattice 连接器的日志条目示例


本节包含 VPC 莱迪思连接器的示例日志。对于 VPC Lattice 连接器，日志包括其他字段，这些字段提供有关连接器配置和网络设置的信息。

此日志条目适用于成功完成的 VPC Lattice 连接器发送操作。

```
{
  "operation": "SEND",
  "timestamp": "2025-09-05T14:20:19.577192454Z",
  "connector-id": "connector-id",
  "transfer-id": "transfer-id",
  "file-transfer-id": "transfer-id/file-transfer-id",
  "file-path": ""/amzn-s3-demo-bucket/my-test-folder/connector-vpc-lattice-us-east-1-2025-03-22.csv"",
  "status-code": "COMPLETED",
  "start-time": "2025-09-05T14:20:19.434072509Z",
  "end-time": "2025-09-05T14:20:19.481453346Z",
  "account-id": "account-id",
  "connector-arn": "arn:aws:transfer:us-east-1:account-id:connector/connector-id",
  "remote-directory-path": "/test-bucket/test-folder/",
  "bytes": 262,
  "egress-type": "VPC_LATTICE",
  "vpc-lattice-resource-configuration-arn": "arn:aws:vpc-lattice:us-east-1:account-id:resourceconfiguration/resource-configuration-arn-id,
  "vpc-lattice-port-number": 22
}
```

VPC Lattice 连接器日志包括以下其他字段：
+ `egress-type`-连接器的出口配置类型
+ `vpc-lattice-resource-configuration-arn`-定义目标 SFTP 服务器位置的 VPC 莱迪思资源配置的 ARN
+ `vpc-lattice-port-number`-用于通过 VPC 莱迪思连接到 SFTP 服务器的端口号

## 密钥交换算法失败的日志条目示例


本节包含密钥交换算法 (KEX) 失败的示例日志。这些是结构化日志的 ER **RO** RS 日志流中的示例。

此日志条目是存在主机密钥类型错误的示例。

```
{
    "activity-type": "KEX_FAILURE",
    "source-ip": "999.999.999.999",
    "resource-arn": "arn:aws:transfer:us-east-1:999999999999:server/s-999999999999999999",
    "message": "no matching host key type found",
    "kex": "ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519,ssh-rsa,ssh-dss"
}
```

此日志条目是 KEX 不匹配的示例。

```
{
    "activity-type": "KEX_FAILURE",
    "source-ip": "999.999.999.999",
    "resource-arn": "arn:aws:transfer:us-east-1:999999999999:server/s-999999999999999999",
    "message": "no matching key exchange method found",
    "kex": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group14-sha256"
}
```

# 使用 T CloudWatch ransfer Family 服务器的指标
使用 CloudWatch 指标

**注意**  
 您还可以从 Transfer Family 控制台获取 Transfer Family 指标。有关详细信息，请参阅 [在控制台中监控使用情况](monitor-usage-transfer-console.md) 

您可以使用 CloudWatch 指标获取有关服务器的信息。*指标*表示发布到的一组按时间顺序排列的数据点。 CloudWatch使用指标时，必须指定 Transfer Family 命名空间、指标名和[维度](#cw-dimensions)。有关指标的更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。

 下表描述了 Transfer Family 的 CloudWatch 指标。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/metrics.html)

## Transfer Family 维度


*维度*是作为指标标识一部分的 name/value 配对。有关尺寸的更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[尺寸](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension)。

下表描述了 Transfer Family 的 CloudWatch 尺寸。


| 维度 | 说明 | 
| --- | --- | 
| `ServerId` | 服务器的唯一 ID。 | 
| `ConnectorId` | 连接器的唯一 ID。用于 AS2、用于`OutboundMessage`和 `OutboundFailedMessage` | 

## AWS 用户通知服务 与一起使用 AWS Transfer Family
用户通知

要获得有关 AWS Transfer Family 事件的通知，您可以使用[AWS 用户通知服务](https://docs.aws.amazon.com/notifications/latest/userguide/what-is.html)设置各种交付渠道。当事件与您指定的规则匹配时，您会收到通知。

您可以通过多个渠道接收事件通知，包括电子邮件、[聊天应用程序中的 Amazon Q 开发者版](https://docs.aws.amazon.com/chatbot/latest/adminguide/what-is.html)聊天通知或 [AWS Console Mobile Application](https://docs.aws.amazon.com/consolemobileapp/latest/userguide/what-is-consolemobileapp.html) 推送通知。您还可以在[控制台通知中心查看通知](https://console.aws.amazon.com/notifications/)。 用户通知服务 支持聚合，这可以减少您在特定事件期间收到的通知数量。

有关更多信息，请参阅[使用 AWS Transfer Family 托管工作流程自定义文件传送通知](https://aws.amazon.com/blogs/storage/customize-file-delivery-notifications-using-aws-transfer-family-managed-workflows/)博客文章和[什么是 AWS 用户通知服务？](https://docs.aws.amazon.com/notifications/latest/userguide/what-is.html) 在《*AWS 用户通知服务 用户指南》*中。

# 使用查询筛选日志条目
CloudWatch 查询

您可以使用 CloudWatch 查询来筛选和识别 Transfer Family 的日志条目。本节包含一些示例。

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

1. 您可以创建查询或规则。
   + 要创建 **Logs Insight** **s 查询，请从左侧导航面板中选择 Lo** gs Insights，然后输入查询的详细信息。
   + 要创建 “**贡献者见解**” 规则，请从左侧导航面板中选择 “见解” > “贡献者见解”，然后输入规则的详细信息。

1. 运行您创建的查询或规则。

**查看身份验证失败的主要贡献者**

在您的结构化日志中，身份验证失败日志条目类似于以下内容：

```
{
  "method":"password",
  "activity-type":"AUTH_FAILURE",
  "source-ip":"999.999.999.999",
  "resource-arn":"arn:aws:transfer:us-east-1:999999999999:server/s-0123456789abcdef",
  "message":"Invalid user name or password",
  "user":"exampleUser"
}
```

运行以下查询以查看导致身份验证失败的主要原因。

```
filter @logStream = 'ERRORS'
| filter `activity-type` = 'AUTH_FAILURE'
| stats count() as AuthFailures by user, method
| sort by AuthFailures desc
| limit 10
```

您可以创建 “**CloudWatch 贡献者**CloudWatch 见解**” 规则来查看身份验证失败情况，而不是使用 Logs** Insights。创建类似于以下内容的规则。

```
{
    "AggregateOn": "Count",
    "Contribution": {
        "Filters": [
            {
                "Match": "$.activity-type",
                "In": [
                    "AUTH_FAILURE"
                ]
            }
        ],
        "Keys": [
            "$.user"
        ]
    },
    "LogFormat": "JSON",
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "LogGroupARNs": [
        "arn:aws:logs:us-east-1:999999999999:log-group:/customer/structured_logs"
    ]
}
```

**查看文件打开位置的日志条目**

在您的结构化日志中，文件读取日志条目类似于以下内容：

```
{
  "mode":"READ",
  "path":"/fs-0df669c89d9bf7f45/avtester/example",
  "activity-type":"OPEN",
  "resource-arn":"arn:aws:transfer:us-east-1:999999999999:server/s-0123456789abcdef",
  "session-id":"0049cd844c7536c06a89"
}
```

运行以下查询以查看表明文件已打开的日志条目。

```
filter `activity-type` = 'OPEN'
| display @timestamp, @logStream, `session-id`, mode, path
```