Лямбда в Private VPC требует много времени для использования S3 API - PullRequest
0 голосов
/ 10 ноября 2019

Я создал лямбда-функцию для перемещения объекта из одного сегмента 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

В чем может быть проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...