[fluidd] 一个关于我如何迷上 IDCF 对象存储的故事

我叫佐佐木,是一名基础设施工程师。
前几天我有机会在IDCF环境下搭建一台服务器,当时我接触到了将日志存储在对象存储中的想法。我对此很感兴趣,所以这里记录一下我当时的笔记。
配置如下所示
API 服务器 (fluentd) ⇒ 日志聚合服务器 (fluentd) ⇒ 对象存储
我认为这是一种常见的配置。
初始设置
IDCF 有官方流程,所以我在设置时以此为参考。
由于它是与 S3 兼容的存储,我们使用 fluent-s3-plugin。
初始设置如下所示
<store>type s3 aws_key_id XXXXXXXXXXXXXXXXXXX aws_sec_key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX s3_bucket bucket_name s3_endpoint http://ds.jp-east.idcfcloud.com check_apikey_on_start false s3_object_key_format %{path}%{time_slice}_%{index}.%{file_extension} path logs/ buffer_path /var/log/fluent/idcf/buffer/ flush_interval 60s time_slice_format %Y%m%d/%Y%m%d-%H</store>
但是,由于某种原因,它没有上传到对象存储。
创建缓冲区文件没有问题
我研究过这个错误,但我不太明白……
我完全被迷住了……
答案写在 fluent-plugin-s3 文档中。
签名版本
API 请求的签名版本。s3
表示签名版本 2,v4表示签名版本 4。默认值为nil(遵循 SDK 的默认值)。当您使用仅接受签名版本 2 的 S3 兼容存储时,此参数非常有用。
关键在于 API 请求的签名版本
- 使用签名版本 2 时指定 s3,使用版本 4 时指定 v4。
- 这对于具有签名版本 2 的 S3 兼容存储非常有用。
- 默认值取决于 SDK 版本。
看来您需要设置所使用存储的签名版本。
由于对象存储仅支持签名版本 2,
signature_version s3
添加这个之后,它立刻就生效了。
fluent-s3-plugin 似乎也支持 S3 签名版本 4。
概括
我了解了很多关于签名版本的信息,因为它可以在其他与 S3 兼容的存储环境中使用。
不仅是这次,官方文件通常都是英文的,人们往往会避免阅读,但答案却常常是用英文写的。
让我们一起提高英语水平吧!
如果您觉得这篇文章有帮助,请点赞!
0