【问题标题】:How do I get write access to EFS from Lambda?如何从 Lambda 获得对 EFS 的写入权限?
【发布时间】:2021-03-15 22:46:19
【问题描述】:

我创建了一个 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()
        })
    });
};

【问题讨论】:

  • 嗨,戈登,你找到答案了吗?我已经坚持了好几个小时了。只是试图从 Lambda 将 img 保存到 EFS 并尝试了所有建议。仍然收到权限错误。感谢您发布您的问题!
  • @LukeButhman 我的答案是第二个答案。我已经放弃了 AWS,转而使用谷歌云上的应用引擎,因为它更容易。

标签: amazon-web-services lambda aws-lambda amazon-efs


【解决方案1】:

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/

【讨论】:

  • 谢谢。添加用户、组和权限对我有很大帮助
【解决方案2】:

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

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

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

还要验证您是否已正确设置根目录路径并挂载 指向 Lambda 和 EFS 接入点。

如果 lambda 文件系统中的挂载点是 /mnt/fs/,那么您在访问点中的根目录路径必须是 /fs

【讨论】:

  • 好的,补充说。虽然仍然无法访问。需要一段时间吗?
  • 没有它的瞬间。 cloud-watch 日志是否显示任何错误?
  • 就是这个:错误:EACCES:权限被拒绝,mkdir '/mnt/fs/newfolder',我在 /mnt/fs 上安装了 EFS。
  • 请验证根目录路径和挂载点,更新答案相同。
  • 我已将“根目录路径”更改为 /fs 和 /mnt/fs。两者都会导致 Lambda 服务器错误。如果我将它改回 / 然后 lambda 再次工作,但回到第一方,没有文件访问权限。
【解决方案3】:
  • 我遇到了类似的问题,并按照此处列出的所有步骤进行操作,但没有任何解决方法。
  • 经过进一步探索,我发现DataSync在将文件从S3迁移到EFS时,也改变了EFS文件夹的权限。

  • 我能够通过创建 EC2、挂载 EFS 并在目录上 chown 来解决此问题。然后我可以像以前一样保存。

【讨论】:

    猜你喜欢
    • 2018-11-17
    • 1970-01-01
    • 2020-12-07
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2012-05-27
    • 1970-01-01
    相关资源
    最近更新 更多