CloudWatch LogsからKinesis Firehoseに送る時にはまったエラー
ECSコンテナのログをCloudWatch Logsに出力しており、そこからS3に保存しようとした時に、Kinesis Firehoseを使って行える例があったので試してみました。その時にしょうもないミスではまったのでメモです。
この例をもとに試していましたが、Firehose --(delivery stream)-> S3へ転送の設定が終わった後に、12のCloudWatchLogsのSubscription filterを使って、Firehoseへ流す設定を追加しようとしたら以下のエラーが出ました。
An error occurred (InvalidParameterException) when calling the PutSubscriptionFilter operation: Could not deliver test message to specified Firehose stream. Check if the given Firehose stream is in ACTIVE state.
そのまま読むと、「テストメッセージの転送に失敗しました。Firehose streamがアクティブになっているか確認してください」です。しかし、streamはすでにActiveステータスになっており、Firehoseにあるテストメッセージの送信を行うと、ちゃんとS3にテストデータが出力されていました。*1
状況的にはSubscription filter設定の何かが悪い、おそらく権限なのでIAMだろうと考えました。そしてよくみていくと、
10. Create a permissions policy to ...
で設定するIAM Policyでregionを書き換えるところがap-northeast1
(-忘れ)になっており、それを修正したら無事動作しました。
しょうもないミスなんですが、このエラーメッセージからは読み取りにくかったです。streamがActiveじゃないのが結構あるエラーなのか、確認してみてねがミスリードを誘うことに。