背景
在日志保留周期越来越长的场景下,把全部数据都放在高频检索链路中,通常会带来持续的存储成本压力。对于"需要长期留存、但低频访问"的日志,采用观测云数据转发能力,将数据归档到 AWS S3,是一条更稳妥的成本与治理平衡路径。
为什么值得做
将日志转发到 S3 后,团队通常可以获得以下收益:
- 以更低成本实现长期归档,形成冷热分层。
- 保留原始日志,便于审计追溯与合规留存。
- 为后续离线分析、ETL、数据仓库加工提供统一数据底座。
- 将在线检索与归档解耦,提升整体日志治理弹性。
方案概览
观测云日志转发至 S3 支持三种接入方式:
- 角色授权(推荐)
- 账号授权
- Access Key(AK/SK)授权
在生产环境中,建议优先使用角色授权,以获得更好的凭证安全性与权限治理能力。
前提条件
三种方式在开始前都需要先准备以下信息:
-
在 AWS 目标区域创建 S3 存储桶(建议结合生命周期策略,必要时启用版本控制/对象锁)。
-
明确存储桶名称(例如
guance-log-archive-2026)和区域(例如ap-east-1、cn-north-1)。 -
在观测云
管理 -> 数据转发 -> 新建规则页面获取:- 观测云账号 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 中创建策略,重点授予 PutObject、GetObject、ListBucket、GetBucketLocation 四项权限,并将资源限定在目标桶。


json
{
"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:观测云账号 IDsts:ExternalId:观测云外部 ID


json
{
"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。

json
{
"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 策略

json
{
"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 后在观测云规则中填写并测试连接。



效果验证
建议从以下四个维度确认配置已生效:
- 规则侧验证:观测云"测试连接"通过。
- 存储侧验证:S3 指定前缀下有持续对象写入。
- 内容侧验证:抽样下载对象,确认日志结构与字段完整。
- 运行侧验证:连续观察无频繁失败或权限异常。
常见问题与注意事项
- 中国区与海外区 ARN 前缀混用,导致授权失败。
- 角色授权失败时,优先核查 Account ID 与 External ID 是否正确。
- 若出现
AccessDenied,请核对策略是否包含PutObject、ListBucket、GetBucketLocation。 - 桶区域与观测云规则填写区域不一致会导致连接测试失败。
- Access Key 模式建议定期轮换密钥并控制权限范围。
总结
通过角色授权、账号授权或 Access Key 三种方式,都可以将观测云日志稳定转发到 AWS S3,实现低成本长期归档。实际落地中,建议优先采用角色授权,并重点关注三个关键点:授权模型、ARN 分区前缀、区域一致性。完成这三点后,日志归档链路通常可以稳定运行,并为后续审计、分析与数据加工提供可靠基础。