Я создал лямбда-функцию для перемещения объекта из одного сегмента S3 в другой. Лямбда-функция существует в VPC.
const AWS = require("aws-sdk");
const s3 = new AWS.S3({apiVersion: '2006-03-01'});
const sourceBucket = "source-bucket";
const destinationBucket = "destination-bucket";
const copyObjectAsync = (params) => new Promise((resolve, reject) => {
s3.copyObject(params, (err, data) => {
if (err) reject(err);
else resolve(data);
});
});
const deleteObjectAsync = (params) => new Promise((resolve, reject) => {
s3.deleteObject(params, (err, data) => {
if (err) reject(err);
else resolve(data);
});
});
exports.handler = async (event) => {
const objectKey = event.Records[0].s3.object.key;
try {
console.log(`Start moving: ${objectKey}`);
const copySource = "/" + sourceBucket + "/" + objectKey;
await copyObjectAsync({
Bucket: destinationBucket,
CopySource: copySource,
Key: objectKey,
ContentType: 'application/x-gzip',
});
console.log(`Copied successfully - ${objectKey}`);
await deleteObjectAsync({
Bucket: sourceBucket,
Key: objectKey,
});
console.log(`Deleted successfully - ${objectKey}`);
} catch (err) {
if (err.code === 'NoSuchKey') {
console.log(`${objectKey} already moved`);
return;
}
console.log(err.stack.substr(0, 200));
// Throw to retry?
throw err;
}
}
Я знаю, что конечные точки S3, политики S3, роль IAM и т. Д. Были настроены правильно, потому что эта функция работает, но я заметил, что при вызове * происходит большая задержка1004 * или s3.deleteObject
. Например, в приведенном ниже исполнении есть ~ 4-минутное время ожидания для перемещения тестового файла с «hello world» в нем.
CloudWatch Logs
09:39:52 START RequestId: <GUID> Version: $LATEST
09:39:52 2019-11-10T09:39:52.676Z <GUID> INFO Start moving: source-bucket/input/tenbatsu_copy_files_2.txt
09:44:16 2019-11-10T09:44:16.017Z <GUID> INFO Copied successfully - source-bucket/input/tenbatsu_copy_files_2.txt
09:44:16 2019-11-10T09:44:16.220Z <GUID> INFO Deleted successfully - source-bucket/input/tenbatsu_copy_files_2.txt
09:44:16 END RequestId: <GUID>
09:44:16 REPORT RequestId: <GUID> Duration: 263579.63 ms Billed Duration: 263600 ms Memory Size: 128 MB Max Memory Used: 99 MB Init Duration: 380.26 ms
2 + минуты для копированияи затем время ожидания перед удалением
09:56:35 START RequestId: <GUID> Version: $LATEST
09:56:35 2019-11-10T09:56:35.363Z <GUID> INFO Start moving: source-bucket/input/tenbatsu_copy_files_3.txt
09:58:46 2019-11-10T09:58:46.380Z <GUID> INFO Copied successfully - source-bucket/input/tenbatsu_copy_files_3.txt
10:01:35 END RequestId: <GUID>
10:01:35 REPORT RequestId: <GUID> Duration: 300100.16 ms Billed Duration: 300000 ms Memory Size: 128 MB Max Memory Used: 99 MB Init Duration: 369.49 ms
10:01:35 2019-11-10T10:01:35.460Z <GUID> Task timed out after 300.10 seconds
В чем может быть проблема?