【问题标题】:AWS Lambda EFS | EACCES: permission deniedAWS Lambda EFS | EACCES:权限被拒绝
【发布时间】:2020-12-07 07:46:17
【问题描述】:

所以,我正在尝试将我的 lambda 函数与 EFS 集成。我可以访问根目录(从 lambda 只读),因为我可以在我的根目录中看到 xyz 目录。 /mnt/ -> xyz

当我尝试访问 /mnt/xyz/mnt/xyz/ 时,我收到此错误:

{
  "errorType": "Error",
  "errorMessage": "EACCES: permission denied, scandir '/mnt/xyz/'",
  "trace": [
    "Error: EACCES: permission denied, scandir '/mnt/xyz/'",
    "    at Object.readdirSync (fs.js:948:3)",
    "    at Runtime.exports.handler (/var/task/index.js:19:24)",
    "    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
  ]
}

授予接入点的权限:777

【问题讨论】:

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


    【解决方案1】:

    我尝试复制该问题,并且可以验证我是否遇到了同样的问题。帮助来自以下 GitHub 问题:EFS permission denied

    权限被拒绝是由于分别在访问点和 lambda 中错误地设置了 root 和本地挂载点。 有效的正确设置是:

    接入点(注意/lambda

    Lambda(注意/mnt/lambda

    这些设置可以成功访问 EFS。

    【讨论】:

    • 感谢您的详细回复。不过,这不是我的情况,因为我能够访问根目录(在 lambda 控制台中打印 xyz dir [sub dir inside efs])。令人惊讶的是,这是一个用户/组 ID 问题。
    • @NishantThapliyal 感谢您告诉我。很高兴它最终解决了:-)
    • 我遇到了您描述的确切问题。谢谢@Marcin
    • @NishantThapliyal 您是如何解决用户/组 ID 问题的?
    • @Paulo 我已经在下面发布了详细的答案。
    【解决方案2】:

    我面临的问题与用户/组 ID(所有权)有关。该文件由在 AWS EC2 实例上运行的应用程序生成并由 AWS Lambda 函数使用。

    要查找文件的所有者/组,请使用 cmd ls -al

    要查找所有者/组ID,请使用 cmd ls -n

    作为根生成的文件 (UID: 0) 我需要在 EFS 接入点将 owner idgroup id 设置为 0

    此配置解决了我的问题。

    【讨论】:

    • 我只是在 lambda 本身中运行了 ls -l 命令(临时),以确保它可以看到 EFS。我还必须将此与将端口孔(2049,进出)结合到安全组中,以便 EFS 到 lambda 文件流量可以通过。谢谢你的帖子。
    猜你喜欢
    • 2020-09-07
    • 2020-06-03
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 2015-07-20
    • 2016-03-14
    • 2016-11-14
    相关资源
    最近更新 更多