KinesisFirehoseがRedshiftテーブルにデータをプッシュするようにしています。
消防ホースストリームは機能しており、S3にデータを配置しています。
しかし、Redshiftの宛先テーブルには何も到着しません。
どうすればこれをトラブルシューティングできますか?
結局、Firehoseストリームを削除して再作成することで、それを機能させました:-/おそらく、Webコンソールを介して繰り返し編集すると、物事が不安定になりました。
しかし、ここにトラブルシューティングのガイドラインがあります:
この時点で、Redshiftログで接続の試行を確認できるはずです。
select * from stl_connection_log where remotehost like '52%' order by recordtime desc;
Firehoseが使用するRedshiftユーザーがターゲットテーブルに対して十分な権限を持っていることを確認してください。
select tablename,
HAS_TABLE_PRIVILEGE(tablename, 'select') as select,
HAS_TABLE_PRIVILEGE(tablename, 'insert') as insert,
HAS_TABLE_PRIVILEGE(tablename, 'update') as update,
HAS_TABLE_PRIVILEGE(tablename, 'delete') as delete,
HAS_TABLE_PRIVILEGE(tablename, 'references') as references
from pg_tables where schemaname='public' order by tablename;
次に、COPYコマンドが実行されているかどうかを確認できます。
select * from stl_query order by endtime desc limit 10;
次に、ロードエラーまたはサーバーエラーを確認します。
select * from stl_load_errors order by starttime desc;
select * from stl_error where userid!=0 order by recordtime desc;
データまたはCOPYオプションにフォーマットの問題がある場合、またはデータとターゲット列の不一致がある場合は、少なくともCOPYの試行といくつかのロードエラーが表示されるはずです。
それでもスタックし、ログテーブルに何も表示されない場合は、Firehoseストリーム全体を削除して再作成してみてください。これは、Webコンソールに関連するバグがある可能性があるためです。 (このステップは私のために働いた)
IAMロールに移動します(firehose_delivery_role
)Kinesis Firehoseのセットアップ中に自動作成され、次のロールがアタッチされていることを確認します。
AmazonS3FullAccess
AmazonRedshiftFullAccess
AmazonKinesisFullAccess
AmazonKinesisFirehoseFullAccess
IAMのS3認証情報が省略され、Kinesisセットアップが機能しなくなるバグがあります。
また、S3に蓄積されているデータファイルが実際に表示されていることを確認してください。
ここで迷子になった人のために私のケースを投稿したかった。
ここに掲載されている指示を介して、S3バケットへのサーバー側暗号化呼び出しを実施していました: http://docs.aws.Amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
Firehoseが使用するバケットでこのポリシーを使用する場合の問題は、Firehoseが暗号化されていないマニフェストファイルと暗号化されたデータファイルを作成することです。このポリシーが適用されている場合、マニフェストファイルはS3で作成されないため、Redshiftのロードはトリガーされません。したがって、私たちの行動は、データがバケットに到着することを示しましたが、マニフェストファイルはなく、データのロードはありません。
Kinesis Firehosのセットアップ中に、Redshift masteruser
資格情報を使用します。他のユーザーは機能しません。