私はAPIゲートウェイを使用して、S3からmpegファイル(10MB)をインポートしてLambdaの/tmpフォルダに保存し、Lambdaがそれを外部API(YouTubeなど)にアップロードするLambda関数を呼び出しています。最近、APIゲートウェイのLambda呼び出しがエラーで断続的に失敗しています。
[Errno 28] No space left on device
ファイルをダウンロードする方法は次のとおりです
urllib.urlretrieve (s3_mpeg_url, '/tmp/{}'.format(mpeg_filename))
同じラムダ関数の新しいバージョンを作成し、を指すエイリアスAPIゲートウェイに割り当てると、動作し始めますが、ある時点で再び同じエラーが発生し続けます。
ラムダコンソールからラムダ関数をテストすると常に動作します
何か案が ?
ベストアンサー1
ラムダ関数利用可能なディスク容量は約500MBです/tmp
ただし、パフォーマンス上の理由から、AWS Lambda は関数のインスタンスを保持し、後続の呼び出しで再利用する場合があります。ここでは、2 つの方法があります。
mpeg
関数が完全にステートレスである場合 (つまり、外部 API にアップロードした後はファイルが必要ない場合)、/tmp
アップロード後にフォルダーからファイルを削除するだけです。- データを保持する必要がある場合は、処理後に S3 や DynamoDB などの別のメディアに保存することを検討してください。