sql >> データベース >  >> RDS >> PostgreSQL

コピーコマンドを開始したラムダ関数がタイムアウトした後でも、コピーコマンドをredshiftで実行し続けるにはどうすればよいですか?

    AWSドキュメント タイムアウトが発生したときに何が起こるかについては明確ではありません。ただし、「シャットダウン」フェーズに移行すると言っても差し支えないと思います。このフェーズでは、ランタイムコンテナが環境によって強制的に終了されます。

    これは、データベース接続で使用されているソケット接続が閉じられ、そのソケットをリッスンしているRedshiftプロセスがファイルの終わり(クライアントの切断)を受け取ることを意味します。この状況でのデータベースの通常の動作は、未処理のクエリを終了し、トランザクションをロールバックすることです。

    私がその説明をした理由は、あなたができないことをあなたに知らせるためです。 クエリの寿命を、そのクエリを開始するLambdaの寿命を超えて延長します。データベース接続ライブラリの使用を継続したい場合は、タイムアウトしないサービスを使用する必要があります。AWSバッチまたはECSが2つのオプションです。

    ただし、より良いオプションがあります。 Redshift Data API 、これはBoto3でサポートされています> 。

    このAPIは非同期で動作します。つまり、クエリをRedshiftに送信し、クエリの動作を確認するために使用できるトークンを取得します。クエリが完了/失敗したときにAWSEventbridgeにメッセージを送信するようにRedshiftに指示することもできます(そのため、別のLambdaを作成して適切なアクションを実行できます)。



    1. SQLAlchemyはローカルホスト上のPostgresqlに接続できません

    2. そのデータベースを作成した後、rootであるデータベースにアクセスできません

    3. JDBC:単一のデータベース呼び出しを介して複数の結果セットを返す-Oracleでは機能しない

    4. MySQL CREATE TABLE IF NOT EXISTS-> Error 1050