观测云日志转发至 AWS S3 最佳实践

    banner1-2.png

    背景

    在日志保留周期越来越长的场景下,把全部数据都放在高频检索链路中,通常会带来持续的存储成本压力。对于“需要长期留存、但低频访问”的日志,采用观测云数据转发能力,将数据归档到 AWS S3,是一条更稳妥的成本与治理平衡路径。

    为什么值得做

    将日志转发到 S3 后,团队通常可以获得以下收益:

    • 以更低成本实现长期归档,形成冷热分层。
    • 保留原始日志,便于审计追溯与合规留存。
    • 为后续离线分析、ETL、数据仓库加工提供统一数据底座。
    • 将在线检索与归档解耦,提升整体日志治理弹性。

    方案概览

    观测云日志转发至 S3 支持三种接入方式:

    1. 角色授权(推荐)
    2. 账号授权
    3. Access Key(AK/SK)授权

    在生产环境中,建议优先使用角色授权,以获得更好的凭证安全性与权限治理能力。

    前提条件

    三种方式在开始前都需要先准备以下信息:

    1. 在 AWS 目标区域创建 S3 存储桶(建议结合生命周期策略,必要时启用版本控制/对象锁)。
    2. 明确存储桶名称(例如 guance-log-archive-2026)和区域(例如 ap-east-1cn-north-1)。
    3. 在观测云 管理 -> 数据转发 -> 新建规则 页面获取:
      • 观测云账号 ID(Account ID)
      • 观测云外部 ID(External ID,角色授权时必需)

    分区注意事项:

    • 中国区(北京/宁夏)使用 arn:aws-cn:s3:::
    • 海外区使用 arn:aws:s3:::

    配置步骤

    方式一:角色授权(推荐)

    该方式通过 IAM Role + External ID 建立受控信任关系,适合长期稳定运行。

    步骤 1:创建 S3 存储桶

    示例桶名:guance-csm-s3

    步骤 2:创建 S3 权限策略

    在 IAM 中创建策略,重点授予 PutObjectGetObjectListBucketGetBucketLocation 四项权限,并将资源限定在目标桶。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "Statement1",
          "Effect": "Allow",
          "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:GetBucketLocation"
          ],
          "Resource": [
            "arn:aws:s3:::guance-csm-s3",
            "arn:aws:s3:::guance-csm-s3/*"
          ]
        }
      ]
    }
    

    步骤 3:创建 IAM 角色并配置自定义信任策略

    信任策略中最关键的是两项:

    • Principal.AWS:观测云账号 ID
    • sts:ExternalId:观测云外部 ID

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::<观测云账号ID>:root"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "<观测云外部ID>"
            }
          }
        }
      ]
    }
    

    观测云账号 ID 与 External ID 获取路径:观测云控制台 -> 管理 -> 数据转发 -> 新建规则

    随后将第二步创建的 S3 策略附加到该角色。

    步骤 4:在观测云测试并保存规则

    管理 -> 数据转发 -> 新建规则 中选择 AWS S3,访问方式选择“角色授权”,填写地区、桶名称、角色名称与可选存储路径,测试连接成功后保存。

    方式二:账号授权

    该方式通过桶策略直接授权观测云账号访问目标桶。

    步骤 1:配置桶策略

    在 S3 桶的“权限”页编辑桶策略,填入观测云账号 ID 和目标桶 ARN。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "GuanceyunAccess",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::<观测云账号ID>:root"
          },
          "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:ListBucket"
          ],
          "Resource": [
            "arn:aws:s3:::guance-csm-s3",
            "arn:aws:s3:::guance-csm-s3/*"
          ]
        }
      ]
    }
    

    观测云账号 ID 获取路径:观测云控制台 -> 管理 -> 数据转发 -> 新建规则

    步骤 2:在观测云测试并保存规则

    填写地区与桶名称,测试连接成功后保存。

    方式三:Access Key(AK/SK)授权

    该方式通过 IAM 用户访问密钥完成认证,适合临时验证或过渡期使用。

    步骤 1:创建 IAM 用户

    步骤 2:创建并绑定 S3 策略

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "Statement1",
          "Effect": "Allow",
          "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:CreateBucket",
            "s3:ListAllMyBuckets",
            "s3:ListBucket"
          ],
          "Resource": "arn:aws:s3:::*"
        }
      ]
    }
    

    步骤 3:创建访问密钥并在观测云配置

    在 IAM 用户的“安全凭证”中创建访问密钥,获取 AK/SK 后在观测云规则中填写并测试连接。

    效果验证

    建议从以下四个维度确认配置已生效:

    1. 规则侧验证:观测云“测试连接”通过。
    2. 存储侧验证:S3 指定前缀下有持续对象写入。
    3. 内容侧验证:抽样下载对象,确认日志结构与字段完整。
    4. 运行侧验证:连续观察无频繁失败或权限异常。

    常见问题与注意事项

    1. 中国区与海外区 ARN 前缀混用,导致授权失败。
    2. 角色授权失败时,优先核查 Account ID 与 External ID 是否正确。
    3. 若出现 AccessDenied,请核对策略是否包含 PutObjectListBucketGetBucketLocation
    4. 桶区域与观测云规则填写区域不一致会导致连接测试失败。
    5. Access Key 模式建议定期轮换密钥并控制权限范围。

    总结

    通过角色授权、账号授权或 Access Key 三种方式,都可以将观测云日志稳定转发到 AWS S3,实现低成本长期归档。实际落地中,建议优先采用角色授权,并重点关注三个关键点:授权模型、ARN 分区前缀、区域一致性。完成这三点后,日志归档链路通常可以稳定运行,并为后续审计、分析与数据加工提供可靠基础。

    联系我们

    加入社区

    微信扫码
    加入官方交流群

    立即体验

    在线开通,按量计费,真正的云服务!

    立即开始

    选择观测云版本

    代码托管平台