Как мне получить доступ на запись к EFS от Lambda?

Я создал лямбда-функцию. Я создал эластичную файловую систему (EFS) и точки доступа, используя все настройки по умолчанию. Я подключил EFS к лямбда-функции, снова просто используя значения по умолчанию.

Но! Нет доступа для записи в EFS.

Что я пропустил?

Надеюсь, что кто-то знает :)

Примечания ....

Текущий ответ, похоже, не работает. Я также пользуюсь поддержкой AWS более недели. Похоже, они думают, что EFS не монтируется.

EFS монтируется на лямбда в = / mnt / fs

Точка доступа EFS - путь к корневому каталогу = / (предложение изменить это значение на / fs вызывает внутреннюю ошибку сервера, служба поддержки AWS предложила / mnt / fs, что также вызывает внутреннюю ошибку сервиса).

AmazonElasticFileSystemClientFullAccess и AWSLambdaVPCAccessExecutionRole добавлены к роли выполнения.

Пример тестового узла js:

exports.handler = function(event, ctx, callback) {
    const fs = require("fs");
    fs.mkdir('/mnt/fs/newfolder', { recursive: true }, (err) => {
        callback(null, {
            statusCode: 200,
            "content-type": "text/html",
            body: (err || "ok").toString()
        })
    });
};

person Gordon Truslove    schedule 03.12.2020    source источник


Ответы (2)


Для записи EFS к вашей роли выполнения Lambda должен быть прикреплен AmazonElasticFileSystemClientFullAccess.

Чтобы добавить, перейдите в Lambda ›Permission› Execution role и щелкните имя роли.

Теперь роль откроется, нажмите «Добавить политику» под разрешениями и добавьте AmazonElasticFileSystemClientFullAccess и AWSLambdaVPCAccessExecutionRole.

Также проверьте, правильно ли вы установили путь к корневому каталогу и точку монтирования в точке доступа Lambda и EFS.

Если точка монтирования в файловой системе лямбда равна /mnt/fs/, тогда путь к корневому каталогу в точке доступа должен быть /fs.

person Atul Sharma    schedule 03.12.2020
comment
хорошо, добавил это. Однако доступа все еще нет. Это займет время? - person Gordon Truslove; 04.12.2020
comment
Нет, это мгновение. Журналы облачных часов показывали какую-либо ошибку? - person Atul Sharma; 04.12.2020
comment
Только вот это: Ошибка: EACCES: доступ запрещен, mkdir '/ mnt / fs / newfolder', я смонтировал EFS в / mnt / fs. - person Gordon Truslove; 04.12.2020
comment
Пожалуйста, проверьте путь к корневому каталогу и точку монтирования, обновите ответ для них. - person Atul Sharma; 04.12.2020
comment
Путь к корневому каталогу в точке доступа EFS должен быть /fs. - person Atul Sharma; 04.12.2020
comment
На точке доступа указано, что путь к корневому каталогу - /. - person Gordon Truslove; 04.12.2020
comment
Он должен быть /fs, так как ваша точка монтирования лямбда - /mnt/fs. - person Atul Sharma; 04.12.2020
comment
Я изменил путь к корневому каталогу на / fs и / mnt / fs. Оба вызывают ошибки сервера лямбда. Если я верну его обратно на /, лямбда снова будет работать, но вернемся к исходному состоянию, без доступа к файлам. - person Gordon Truslove; 04.12.2020

В документации по aws отсутствует часть о пользовательских настройках posix, но это объясняется в сообщении в блоге.

Чтобы добавить EFS в лямбда.

Разрешения AmazonElasticFileSystemClientFullAccess и AWSLambdaVPCAccessExecutionRole необходимо добавить к роли выполнения.

EFS монтируется на лямбда-выражение в = / mnt / fs Путь к точке доступа EFS = / mnt / fs

Добавьте пользователя posix в точку доступа. Пользователь 1000, группа 1000 и разрешения 0777.

Как объясняется в этом сообщении в блоге:

https://aws.amazon.com/blogs/compute/using-amazon-efs-for-aws-lambda-in-your-serverless-applications/

person Gordon Truslove    schedule 22.02.2021