

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

# 通过 HTTP 端点记录摄取
<a name="CWL_HTTP_Endpoints"></a>

Amazon CloudWatch Logs 提供了 HTTP 终端节点，允许您使用简单的 HTTP POST 请求将 CloudWatch 日志直接发送到日志。这些端点支持 Sigv4 和持有者令牌身份验证。

**重要**  
我们建议对所有可以集成 S AWS DK 的生产工作负载使用 Sigv4 身份验证。Sigv4 使用短期凭证并提供最强的安全状态。不记名令牌（API 密钥）身份验证适用于 Sigv4 不可行的场景，例如不支持 SDK 集成的第三方日志转发器。 AWS 有关更多信息，请参阅 *IAM 用户指南*中的[长期访问密钥替代方案](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-workloads-use-roles)。

CloudWatch 日志支持以下 HTTP 摄取终端节点：


| 端点 | 路径 | Content-Type | Format | 
| --- | --- | --- | --- | 
| [OpenTelemetry Logs](CWL_HTTP_Endpoints_OTLP.md) | /v1/logs | application/json 或 application/x-protobuf | OTLP JSON 或 Protobuf | 
| [HLC Logs](CWL_HLC_Endpoint.md) | /services/collector/event | application/json | HLC 格式 | 
| [ND-JSON Logs](CWL_HTTP_Endpoints_NDJSON.md) | /ingest/bulk | application/json 或 application/x-ndjson | 换行符分隔的 JSON | 
| [Structured JSON Logs](CWL_HTTP_Endpoints_StructuredJSON.md) | /ingest/json | application/json | JSON 对象或数组 | 

## 常见行为
<a name="CWL_HTTP_Endpoints_Common"></a>

所有 HTTP 摄取端点都具有以下行为：

**身份验证**

所有端点都支持 Sigv4 和持有者令牌身份验证：
+ **Sigv4（推荐）**— 标准 AWS 签名版本 4 签名。只要您的应用程序或基础设施支持 S AWS DK 或可以签署请求，就使用 Sigv4。Sigv4 使用短期凭证，是最安全的身份验证方法。
+ **不记名令牌**-使用`Authorization: Bearer <ACWL token>`标题。
  + 令牌必须是有效的 ACWL 持有者令牌。有关设置说明，请参阅[设置不记名令牌身份验证](CWL_HTTP_Endpoints_BearerTokenAuth.md)。
  + 需要`logs:PutLogEvents`和 `logs:CallWithBearerToken` IAM 权限。

**日志组和日志流**
+ 通过标题提供：`x-aws-log-group`和 `x-aws-log-stream`
+ 除了 OTLP 之外，所有端点也`?logGroup=<name>&logStream=<name>`都支持查询参数。
+ 不能对同一个参数同时使用查询参数和标头。
+ 日志组和日志流都是必需的。

**响应**
+ 成功：`HTTP 200`用身体 `{}`
+ 验证错误：`HTTP 400`
+ 身份验证失败：`HTTP 401`

## HTTP 摄取端点的比较
<a name="CWL_HTTP_Endpoints_Comparison"></a>


| 功能 | HLC 日志 | ND-JSON 日志 | 结构 JSON 日志 | OpenTelemetry 日志 | 
| --- | --- | --- | --- | --- | 
| 路径 | /services/collector/event | /ingest/bulk | /ingest/json | /v1/logs | 
| Content-Type | application/json | application/json 或 application/x-ndjson | application/json | application/json 或 application/x-protobuf | 
| 时间戳字段 | "time"（秒） | "timestamp"（毫秒） | "timestamp"（毫秒） | "timeUnixNano"（纳秒） | 
| 必填字段 | "event" | 无 | 无 | OTLP 结构 () "resourceLogs" | 
| 部分成功响应 | 否 | 是 | 是 | 是 | 
| 查询参数支持 | 支持 | 是 | 是 | 否（仅限标题） | 
| 实体元数据 | 支持 | 是 | 是 | 否 | 
| 接受基元 | 否 | 是 | 否 | 否 | 
| 基于行的解析 | 否 | 是 | 否 | 否 | 
| Protobuf 支持 | 否 | 否 | 否 | 是 | 
| 重试后标题 | 否 | 否 | 否 | 是 | 

## 选择终端节点
<a name="CWL_HTTP_Endpoints_Choosing"></a>
+ **使用 HLC 格式？** 使用 HLC 日志。您现有的 HLC 负载只需最少的更改即可运行。
+ **直播 line-by-line日志？** 使用 ND-JSON 日志。最适合每行发出一个事件的日志管道。最灵活 — 接受任何 JSON 值类型。
+ **正在发送结构化的 JSON 有效负载？** 使用结构化 JSON 日志。最适合生成格式良好的 JSON 对象或数组的应用程序。
+ **已经在使用了 OpenTelemetry？** 使用 OpenTelemetry 日志。接受 OTLP JSON 或 Protobuf 格式，并支持带有重试语义的部分成功响应。