Как получить путь к файлу в AWS Lambda? - PullRequest
0 голосов
/ 21 октября 2019

Я хотел бы отправить файл в Google Cloud Platform с использованием клиентской библиотеки, например, в этом примере (пример кода Node.js): https://cloud.google.com/storage/docs/uploading-objects

enter image description here

Мой текущий код выглядит так:

const s3Bucket = 'bucket_name';
const s3Key = 'folder/filename.extension';
const filePath = s3Bucket + "/" + s3Key;

await storage.bucket(s3Bucket).upload(filePath, {
    gzip: true,
    metadata: {
        cacheControl: 'public, max-age=31536000',
    },
});

Но когда я делаю это, появляется ошибка:

"ENOENT: такого файла или каталога нет, stat'ch.ebu.mcma.google.eu-west-1.ibc.websiteExtract / AudioJobResults / audioGoogle.flac' "

Я также попытался отправить путь, полученный в консоли AWS (путь копированиякнопка) "s3: //s3-eu-west-1.amazonaws.com/ch.ebu.mcma.google.eu-west-1.ibc.website/ExtractAudioJobResults/audioGoogle.flac", но не работает.

enter image description here

1 Ответ

1 голос
/ 21 октября 2019

Вы, кажется, пытаетесь скопировать данные из S3 в Google Cloud Storage напрямую. Это не то, что показывает ваш пример / учебник. В примере кода предполагается, что вы загрузили локальную копию данных в Google Cloud Storage. S3 - это , а не локальное хранилище.

Как вы можете это сделать:

  1. Загрузите данные в /tmp в вашей функции Lambda
  2. Используйте приведенный выше пример кода для загрузки данных из /tmp
  3. (Опционально) Удалите загруженные данные из /tmp

Словопредостережение: Доступное хранилище в /tmp в настоящее время ограничено 500 МБ. Если вы хотите загружать / копировать файлы большего размера, это не сработает. Также имейте в виду, что лямбда-среда исполнения может быть использована повторно, поэтому очистка после себя (например, шаг 3), вероятно, будет хорошей идеей, если вы планируете копировать много файлов.

...