AWS Lambda EFS | EACCES:权限被拒绝

Nis*_*yal 9 amazon-web-services amazon-iam aws-lambda amazon-efs

所以,我正在尝试将我的 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)"
  ]
}
Run Code Online (Sandbox Code Playgroud)

授予接入点的权限:777

Mar*_*cin 11

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

权限被拒绝是由于分别在接入点和 lambda 中错误设置了 root 和本地挂载点引起的。正确设置worrked分别为:

接入点(注/lambda

在此处输入图片说明

Lambda(注/mnt/lambda

在此处输入图片说明

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

  • 感谢您的详细回复。不过,这并不是我的情况,因为我能够访问根目录(在 lambda 控制台中打印 `xyz` dir [efs 内的子目录])。令人惊讶的是,结果是用户/组 ID 问题。 (2认同)

Nis*_*yal 5

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

  • 要查找所有者/文件组,请使用 cmd ls -al 在此处输入图片说明

  • 要查找所有者/组ID,请使用 cmdls -n 在此处输入图片说明

  • 作为文件生成由根(UID:0)我需要设置owner idgroup id0在EFS接入点在此处输入图片说明

此配置解决了我的问题。

  • 在浏览了数十篇帖子和文章以及关于该主题的每个相关 AWS 文档后,毫无效果,这解决了我在 Lambda 尝试简单测试将 .txt 文件写入 EFS 时出现的写入权限错误。我所要做的就是将用户/所有者 ID 更改为 0。非常感谢,这在文档中是不透明的,这绝对是可笑的。 (2认同)