You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Javascript Lambda函数无法访问EFS中复制的依赖包

问题分析与解决步骤

核心问题排查与修复

1. 修复EFS目录权限问题

你通过sudo复制模块到EFS,导致目录/文件所有者为root,而Lambda执行角色默认使用非root用户运行,无权限读取这些文件。在EC2上执行以下命令修正权限:

# 递归修改所有者为EC2默认用户
sudo chown -R ec2-user:ec2-user /mnt/efs/@aws-sdk
sudo chown -R ec2-user:ec2-user /mnt/efs/node-fhir-server-core

# 或设置宽松权限(测试场景可用)
sudo chmod -R 755 /mnt/efs/

2. 验证Lambda的EFS挂载配置

  • 确认Lambda挂载的EFS文件系统ID和EC2上挂载的完全一致
  • 检查Lambda的挂载点路径:需与你复制模块的目录对应(比如EC2上是/mnt/efs/,Lambda挂载时本地路径也要设为/mnt/efs)
  • 核对VPC安全组:EFS安全组要允许Lambda所在安全组的NFS端口2049入站访问

3. 配置Node.js模块查找路径

Lambda的Node.js默认不会自动将EFS挂载目录加入模块搜索路径,需手动添加环境变量:

  • 在Lambda控制台「配置>环境变量」中新增:
    • 键:NODE_PATH
    • 值:/mnt/efs(对应你的EFS挂载路径)
      此配置会让Node.js自动在EFS目录下查找依赖模块

4. 排查EFS控制台无目录显示的问题

EFS控制台文件浏览存在延迟,或可能挂载了错误的文件系统:

  • 在EC2执行df -h,查看/mnt/efs对应的EFS ID,与控制台显示的ID对比
  • 等待数分钟后刷新控制台,或用AWS CLI确认:
    aws efs describe-file-systems --file-system-id <你的EFS ID>
    

测试验证

完成上述配置后重新部署Lambda,再执行测试事件:

{
  "body": "{\"base_version\":\"R4\",\"resource\":{\"given\":\"John\",\"family\":\"Doe\",\"gender\":\"male\",\"birthDate\":\"1990-01-15\"}}"
}

内容的提问来源于stack exchange,提问作者Kendall Boone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:37:20