2017-10-12 8 views
1

イベントをAWS Kinesisに送信します。これらのイベントは、AWSラムダ関数によって処理されます。 しかし、ラムダが何らかのエラーをスローすると、レコードは破棄されず、何度も処理されて新しいレコードの処理がブロックされます。レコードを破棄する方法は?

私は誤ったレコードをスキップして新しいレコードを消化したいと思います。 私はそれを行う方法を理解していません。

ラムダ関数は例外をキャッチしているため、実行エラーが発生してはいけません。

ここでは、Pythonのスニペットを示します。

私は、ラムダは「保持」期間(24時間デフォルト)中に再試行されなければならないことを理解し、私は捨てて、最終的に私はこのlambda retriesに続くと思わエラー

def ProcessKinesisRecords(event, context): 
    body = "ok" 
    response_code = 200 
    for record in event['Records']: 
     # Kinesis data is base64 encoded so decode here 
     try: 
      payload = base64.b64decode(record["kinesis"]["data"]) 
      #...payload processing 
     except Exception as e: 
      body = e 

    return {"isBase64Encoded": True, "statusCode": response_code, "headers": { "x-custom-header": "headerValue" }, "body": body} 

のいずれかの種類のログを記録したいと思います..しかし、私は何が間違っているのか分かりません。

答えて

0

実際、私はすべての例外をキャッチしていませんでした。それはBaseExceptionまたはシステム終了する例外SystemExitを、KeyboardInterruptとGeneratorExitをキャッチしませんDifference between except: and except Exception as e: in Python

:pythonの

except Exception as e: 

で は、すべての例外をキャッチしません。 それが働いていなかった理由です。

関連する問題