如何配置Lambda权限以允许其向EFS写入数据?
Lambda向EFS写入数据的完整配置步骤
1. EFS侧配置
- 确保创建的EFS文件系统和目标Lambda函数属于同一VPC、同一可用区,否则无法完成挂载
- 必须创建EFS访问点(不建议直接挂载EFS根目录),配置POSIX用户组信息:
- 用户ID(UID)可填写Lambda运行时默认UID
993,或自定义通用UID如1000 - 组ID(GID)填写和UID一致的数值即可
- 自定义访问点根目录路径,例如
/lambda-data,同时配置根目录创建权限:所有者UID/GID和上述配置保持一致,目录权限设置为0755或0775
- 用户ID(UID)可填写Lambda运行时默认UID
- EFS挂载点关联的安全组,需开放入方向的NFS端口(2049),允许Lambda所属安全组访问
2. Lambda侧配置
- 给Lambda函数绑定和EFS相同的VPC、私有子网,配置对应安全组,安全组需允许出方向访问EFS挂载点的2049端口
- 给Lambda执行角色添加最小必要权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite" ], "Resource": "替换为你的EFS文件系统ARN" } ] } - 在Lambda「文件系统」配置项中绑定上述EFS访问点,本地挂载路径必须以
/mnt/开头,例如/mnt/efs
3. 写入功能验证
可通过如下Python示例代码测试写入:
def lambda_handler(event, context): test_file = "/mnt/efs/test_write.txt" with open(test_file, "w") as f: f.write("Lambda to EFS test content") return "Write operation completed"
如果执行报错权限不足,优先核对EFS访问点的POSIX用户组配置是否和Lambda运行用户匹配
核心问题说明
创建EFS卷和挂载点时如果未填写任何组信息,默认EFS根目录所有者为root,仅root用户拥有写入权限,而Lambda默认不会以root权限运行,因此无法写入数据,必须通过配置EFS访问点的POSIX权限对齐Lambda运行用户组解决。
内容的提问来源于stack exchange,提问作者Matt Klaver
相关产品推荐
相关产品推荐

