如何从 Lambda 获得对 EFS 的写访问权限?

Gor*_*ove 5 lambda amazon-web-services aws-lambda amazon-efs

我创建了一个 lambda 函数。我使用所有默认设置创建了一个弹性文件系统 (EFS) 和访问点。我将 EFS 附加到 lambda 函数,再次仅使用默认值。

但!没有对 EFS 的写访问权限。

我错过了什么?

希望好心人知道:)

笔记....

当前的答案似乎不起作用。我也已经使用 AWS 支持一个多星期了。他们似乎认为 EFS 没有安装。

EFS 在 = /mnt/fs 挂载到 lambda

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()
        })
    });
};
Run Code Online (Sandbox Code Playgroud)

Gor*_*ove 13

aws 文档遗漏了有关 posix 用户设置的部分,但一篇博客文章对此进行了解释。

将 EFS 添加到 lambda。

需要将 AmazonElasticFileSystemClientFullAccess 和 AWSLambdaVPCAccessExecutionRole 权限添加到执行角色。

EFS 安装到 lambda,位于 = /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/

  • “将 posix 用户添加到接入点。用户 1000,组 1000 和权限 0777”帮助解决了我的安装问题。 (2认同)

Atu*_*rma 8

您的 Lambda 执行角色必须AmazonElasticFileSystemClientFullAccess附加到它才能写入 EFS。

要添加,请转至 Lambda > 权限 > 执行角色,然后单击角色名称。

现在,角色将被打开,点击权限下的添加策略并添加 AmazonElasticFileSystemClientFullAccessAWSLambdaVPCAccessExecutionRole

另请验证您是否已在 Lambda 和 EFS 访问点中正确设置根目录路径和挂载点。

如果 lambda 文件系统中的安装点是,/mnt/fs/则访问点中的根目录路径必须是/fs

  • 我已将“根目录路径”更改为 /fs 和 /mnt/fs。两者都会导致 Lambda 服务器错误。如果我将其改回 / ,则 lambda 再次工作,但回到第一个,没有文件访问权限。 (3认同)