Рейтинг:0

Ошибка AWS Lambda при сборке узла с библиотекой Sharp

флаг jp

У меня проблема с созданием обработчика лямбда. Я пытаюсь использовать четкую библиотеку для изменения размера изображения на S3.

Мой код:

S3.getObject({
    Ведро: имя ведра,
    Ключ: объектКей
}, (ошибка, данные) => {
    SHARP(data.Body).resize(250, 250).toFormat("jpg").toBuffer().then((buffer) => {
        S3.putObject({
            Корпус: буфер,
            Ведро: имя ведра,
            Ключ: объектКей,
            ContentType: "изображение/jpeg",
            ContentDisposition: "встроенный",
        })
    })
});

Мои зависимости узла:

  "зависимости": {
    "aws-sdk": "^2.637.0",
    "дотенв": "^10.0.0",
    "mysql": "^2.18.1",
    "резкий": "^0.29.1",
    "утилита": "^0.12.4"
  },
  "devDependencies": {
    "esbuild": "^0.12.27",
    "узел": "^2.0.12"
  }

Мой код для сборки:

esbuild --bundle --minify --platform=node --target=node12 --outdir=build index.js && cd build && zip index.js.zip index.js

Ошибка AWS Lambda:

Не удается найти модуль «../build/Release/sharp-linux-x64.node»
Требуется стек:
- /var/task/index.js
- /var/runtime/UserFunction.js
- /var/runtime/index.js

Возможные решения:
- Устанавливайте с флагом --verbose и ищите ошибки: "npm install --ignore-scripts=false --verbose sharp"
- Установить для текущей среды выполнения: «npm install --platform=linux --arch=x64 sharp»
- Обратитесь к документации по установке: https://sharp.pixelplumbing.com/install
Tim avatar
флаг gp
Tim
Этот вопрос может быть лучше при сбое сервера. В сообщении говорится, что он не может найти резкость, но почему, я думаю, это больше вопрос к разработчикам, чем к специалистам по инфраструктуре. Я использую AWS SAM для развертывания нечетного программного обеспечения, которое мне нужно развернуть.
Matheus Pereira avatar
флаг jp
Я думал об AWS SAM, но поскольку я новичок в этом мире, я боюсь настраивать это на машине для разработки, но это хороший способ, я могу попробовать это. Спасибо за советы, @Tim!
Tim avatar
флаг gp
Tim
AWS SAM может помочь с зависимостями и развертыванием. Мне показалось, что это проще, чем пытаться делать упаковку и тому подобное самому. Это не суперсложно, но требует немного времени, чтобы изучить и начать работать, но, надеюсь, в целом сэкономит время.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.