とりあえず変更
変更前
lambda_client.invoke_async(function_name: function_name, invoke_args: param)
変更後
response = lambda_client.invoke(
FunctionName=function_name,
Payload=param,
InvocationType='Event'
)
なんで非推奨なったのか
inovkeAsyncとは
ambda関数を非同期で呼び出すための古いAPI
現在は非推奨になっている
なぜ非推奨に
- コールバックパターンを使用しているため、非同期呼び出しの完了状態を取得する方法が限られている。
- invokeAsyncメソッドは、リトライやエラー処理を行うための機能が限定的であり、失敗の発生を検知することができないため、実行中のエラーに対処がむずかしいから
みたいです。
invokenは
invokeAsyncメソッドの代わりにより高度なエラー処理とリトライ機能を提供する新しいAPIであるinvokeメソッド
同期および非同期呼び出しの両方をサポートしているため、invokeAsyncメソッドの代替として使用することができるみたいです。
なので
invokeAsyncメソッドは非推奨になり、代わりにinvokeメソッドを使用することが推奨されているっぽい
コードのinvocation_type
Event
を指定することで非同期実行= Asyncのかわり
RequestResponse
を設定することで同期実行ができるみたいです。
invokenの機能
リトライ機能
Lambda関数が呼び出しに失敗した場合、AWS SDKのinvokeメソッドは自動的にリトライを試みます。
リトライの回数と間隔は、AWS SDKのデフォルト設定に従いますが、カスタマイズすることもできる
エラーハンドリング機能
AWS SDKのinvokeメソッドは、Lambda関数がエラーを返した場合に、エラー情報を取得できるようになっている
これにより、呼び出し元のアプリケーションで適切なエラーハンドリングを行うことができる
タイムアウト設定機能
Lambda関数が実行を完了する前にinvokeメソッドがタイムアウトした場合、AWS SDKは自動的にリトライを試みます。
この場合、SDKのデフォルト設定に従って、最大3回までのリトライする
まとめ
ただしデフォルトでリトライやエラーハンドリングするみたいな設定もあるので、追加でLambda関数へのリクエストが増えそうなので
そこんとこ注意っぽいです