LoginSignup
3
1

More than 5 years have passed since last update.

s3プラグインとaws-elasticsearchプラグインを併用するとエラーが発生する

Last updated at Posted at 2018-03-15

s3プラグインとaws elasticsearch serviceプラグインを、1つのfluent.conf内で使用した場合にエラーが発生し、Fluentdコンテナが起動しないという事案が発生した。

前提

今回、FluentdはDocker containerとしてECSクラスター上で動かしています。

環境情報

・fluentd v1.1.0
・fluentd-s3-plugin v1.1.1
(2018/03/15時点での最近バージョン)
・fluent-plugin-aws-elasticsearch-service v1.0.0
(2018/03/15時点での最近バージョン)

エラー内容

/usr/lib/ruby/2.3.0/rubygems/specification.rb:2287:in `raise_if_conflicts': Unable to activate aws-sdk-s3-1.8.2, because aws-sdk-core-2.11.14 conflicts with aws-sdk-core (~> 3) (Gem::ConflictError)

原因

どうやら2つのプラグインが、aws-adk-coreの異なるバージョン(v2,v3)を使用していることで、conflictを起こしてしまったらしい。

fluentd-s3-plugin  → v3を使用
fluent-plugin-aws-elasticsearch-service → v2を使用

解決策

fluentd-s3-pluginのバージョンをv1.1.1からv1.0.0に変更

まとめ

fluentd-s3-plugin v1.0.0は、aws-sdk-core v2を使用しているため、上記の対応でconflictは解消しました。
今回調べて分かったことを以下に示します。

  • fluent-plugin-s3 v1.1.1は、aws-sdk-core (~> 3)が要件
  • aws-sdk-coreの2つのバージョンが同居していること自体は問題ない
  • aws-sdk-coreの2つのバージョンが同居している状態で、S3プラグインか、Elasticsearchプラグインのどちらか一方を使用することは問題ない
  • 上記の2つのプラグインの、インストールする順番を変えても問題は解決しない(同じエラーメッセージが吐かれる)

Fluentdを使用し、s3とaws elasticsearch serviceにログを転送することは、AWSを使用した場合のログ管理構成として、よくあるパターンであると思います。皆さんもお気をつけてください。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1