fluent-plugin-s3 設定と IAMロール アクションの関係と注意
環境 fluent-plugin-s3 1.6.0
関係性のまとめ
アクション | 関係ある設定 | 説明 |
---|---|---|
s3:ListBucket | check_bucket true | true であればfluent起動時にbucket存在をチェック。存在しなければ起動をリトライするfalse だと起動はするが書き込み時に失敗する |
s3:GetObject | check_object true | true であれば同じobjectがあると上書きせずエラーになるfalse だと同名objectは上書きされる |
s3:PutObject | 書き込み全般 |
つまり check_bucket
check_object
が false
ならアクションは最小限の PutObject
のみでよい
check_object false
の注意
check_object false
の時も s3_object_key_format
が同名にしない事で不用意な上書きを防ぐ事ができる。
s3_object_key_format
を設定していなければ、デフォルト値自体が上書きされにくいフォーマットに自動で変更される。
(s3_object_key_format "%{path}/%{date_slice}_%{hms_slice}.%{file_extension}"
になる)
さらに uuid_flush
hex_random
index
hostname
などを使えばより重複を防止し安全に扱える。
uuid_flush
- bufferがフラッシュされる際、常にUUIDに置き換えられる
- 書き込み失敗のリトライ時も新しいUUIDに置き換えられる
hostname
- ホストネームに置き換えられるので、
%s
や%{hms_slice}
などと組み合わせると重複を防止できる
- ホストネームに置き換えられるので、
hex_random
:- bufferに使われるhashで置き換えられる
- 例えば同名エラーでリトライしたときも同じ値が使われる
%{index}
を組み合わせればリトライ時は%{index}
が更新される
fluent-plugin-s3 v0.12
の注意
正確には fluent-plugin-s3 < 1.0.0rc7
のとき。
この時 check_object false
だと s3_object_key_format
が固定されるので注意
check_bucket true
と APIリクエストにかかる料金の注意
check_bucket
は起動時のチェックなので、 true
でもほとんどAPIリクエストはしない。
しかし check_object
は true
だと書き込みの度にAPI GetObject
を発行する。
そのため、特に書き込み頻度が高い場合は、APIリクエストが常に GetObject
-> PutObject
と二重に発生し料金が嵩むので注意。