0
我創建了下面的aws lambda函數,併爲我的目標存儲桶上的所有S3上傳事件設置觸發器。該函數嘗試拒絕大於2000000字節的文件上載。錯誤消息已記錄,但context.fail('上傳被拒絕')或context.fail(新錯誤('上傳被拒絕'))均未阻止失敗上傳。如何拒絕文件上傳,或者一般情況下,拒絕/停止aws lambda的事件?aws lambda拒絕文件上傳
//// AWS的NodeJS代碼拉姆達://///
exports.handler = (event, context, callback) => {
var MAX_FILE_SIZE = 2000000;
var msg = '';
console.log('Received event:', JSON.stringify(event, null, 2));
if (event.Records && event.Records.length && event.Records.length>0 && event.Records[0].s3 && event.Records[0].s3.object
&& event.Records[0].s3.object.size && event.Records[0].s3.object.size > MAX_FILE_SIZE) {
msg = 'File ' + event.Records[0].s3.object.key + ' rejected, file size ' + event.Records[0].s3.object.size
+ ' is greater than ' + MAX_FILE_SIZE + ' bytes.';
console.log(msg);
var err = new Error(msg);
callback(err, {'disposition':'STOP_RULE'});
context.fail(err);
} else {
msg = 'Upload succeeded.';
console.log(msg);
callback(null, msg);
context.succeed(msg);
}
};
回答是,但它更多的是一個評論:你的lambda函數或你的回調函數需要實際上做的上傳,以防止它。而不是讓你的lambda函數在上傳時觸發,也就是在它已經發生之後,你應該在api網關上使用它並調用它,然後如果它通過了你的驗證,或者發回你的服務器去做上傳,或者讓lambda上傳本身(我建議) –
如果你的目標是限制上傳到S3的大小,那麼你可以使用桶政策來做到這一點。請參閱https://aws.amazon.com/articles/1434。 –