干し石榴長文用

長文以外はTumblrへ徐々に移します。

DynamoDBへ出力するfluentdのDockerコンテナのビルド

タイトルのことをやらないといけなくなったのですが、
普通にfluent-plugin-dynamodbいれても "Broken pipe" で繋がらなくて唸ってたところ、

Apache→fluentd→DynamoDB でハマったこと - echo ${MY_OUTPUT} >>blog

☆ハマりポイント3 DynamoDBプラグインAWS-SDKの2.x未対応

えええと思って、記事の通りgemのaws-sdk-v1入れようとしたのですが、
これが依存関係でnative extensionを含んでおり、
環境がfluentdのDockerコンテナなのでgccやなんかのインストールから始まるし
やっとfluent-gem installできたと思ったらjsonの1.8と2.1がコンフリクトしたりなど、
半日すったもんだして以下のDockerfile(というかRUN)で成功しました。

FROM fluent/fluentd:debian

RUN apt-get update && \
    apt-get install -y ruby-dev gcc zlib1g-dev patch make net-tools && \
    fluent-gem install fluent-plugin-dynamodb -v 0.1.12 && \
    fluent-gem uninstall --force --executables aws-sdk aws-sdk-core aws-sdk-resources -v "~>2" && \
    fluent-gem install aws-sdk -v "~>1" && \
    fluent-gem uninstall --force json -v "~>2" && \
    apt-get purge -y ruby-dev gcc zlib1g-dev patch make && \
    apt-get autoremove -y && \
    apt-get clean

COPY ./fluent.conf /fluentd/etc/

イメージサイズがめちゃくちゃ膨らんだのでaptで入れたものも掃除してあります。
fluent-plugin-dynamodbがaws-sdkの2.xに対応してくれれば

RUN fluent-gem install fluent-plugin-dynamodb

の一発で済むんじゃが…