通过 HTTP 端点记录摄取 - Amazon CloudWatch 日志

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

通过 HTTP 端点记录摄取

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

重要

我们建议对所有可以集成 S AWS DK 的生产工作负载使用 Sigv4 身份验证。Sigv4 使用短期凭证并提供最强的安全状态。不记名令牌(API 密钥)身份验证适用于 Sigv4 不可行的场景,例如不支持 SDK 集成的第三方日志转发器。 AWS 有关更多信息,请参阅 IAM 用户指南中的长期访问密钥替代方案

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

端点 路径 Content-Type Format
OpenTelemetry Logs /v1/logs application/jsonapplication/x-protobuf OTLP JSON 或 Protobuf
HLC Logs /services/collector/event application/json HLC 格式
ND-JSON Logs /ingest/bulk application/jsonapplication/x-ndjson 换行符分隔的 JSON
Structured JSON Logs /ingest/json application/json JSON 对象或数组

常见行为

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

身份验证

所有端点都支持 Sigv4 和持有者令牌身份验证:

  • Sigv4(推荐)— 标准 AWS 签名版本 4 签名。只要您的应用程序或基础设施支持 S AWS DK 或可以签署请求,就使用 Sigv4。Sigv4 使用短期凭证,是最安全的身份验证方法。

  • 不记名令牌-使用Authorization: Bearer <ACWL token>标题。

    • 令牌必须是有效的 ACWL 持有者令牌。有关设置说明,请参阅设置不记名令牌身份验证

    • 需要logs:PutLogEventslogs:CallWithBearerToken IAM 权限。

日志组和日志流

  • 通过标题提供:x-aws-log-groupx-aws-log-stream

  • 除了 OTLP 之外,所有端点也?logGroup=<name>&logStream=<name>都支持查询参数。

  • 不能对同一个参数同时使用查询参数和标头。

  • 日志组和日志流都是必需的。

响应

  • 成功:HTTP 200用身体 {}

  • 验证错误:HTTP 400

  • 身份验证失败:HTTP 401

HTTP 摄取端点的比较

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

选择终端节点

  • 使用 HLC 格式? 使用 HLC 日志。您现有的 HLC 负载只需最少的更改即可运行。

  • 直播 line-by-line日志? 使用 ND-JSON 日志。最适合每行发出一个事件的日志管道。最灵活 — 接受任何 JSON 值类型。

  • 正在发送结构化的 JSON 有效负载? 使用结构化 JSON 日志。最适合生成格式良好的 JSON 对象或数组的应用程序。

  • 已经在使用了 OpenTelemetry? 使用 OpenTelemetry 日志。接受 OTLP JSON 或 Protobuf 格式,并支持带有重试语义的部分成功响应。