AWS Lambda EFS | EACCES:权限被拒绝

AWS Lambda EFS | EACCES: permission denied

因此,我正在尝试将我的 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

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

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

接入点(注意/lambda

Lambda(注/mnt/lambda

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

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

要查找 owner/group 个文件,请使用 cmd ls -al

要查找 owner/group ID 使用 cmd ls -n

作为由 root (UID: 0) 生成的文件,我需要在 EFS 访问点

owner idgroup id 设置为 0

此配置解决了我的问题。