在 AWS 中:
我正在尝试在 EC2 实例和 lambda 函数之间共享 EFS 存储; 我首先为 EC2 实例创建了一个接入点
ap-1
:
根目录路径:/myapp/files
POSIX 用户:
用户ID:1234 群号:1234
根目录创建权限 所有者用户 ID:1234 业主组ID:1234 权限:777
它正在工作,在通过此访问点将 EFS 安装到 EC2 实例后,我可以在已安装的 EFS 中移动文件、解压文件;
但是,当我让 lambda 函数使用这个
ap-1
时,它会失败,并且在运行 Error: EACCES: permission denied
命令时出现 mkdir
;
我做了一些搜索,为 lambda 函数创建了另一个接入点
ap-2
:
根目录路径:/myapp/files
POSIX 用户:
用户ID:1000 群组ID:1000
根目录创建权限 所有者用户 ID:1000 所有者组 ID:1000 权限:0777
它适用于 lambda 函数; 关键是我需要在访问点设置用户
1000
以供lambda函数使用;
我认为 EC2 实例和 lambda 应该使用相同的访问点,因为不需要使用单独的访问点。因此我使用
ap-2
而不是 ap-1
将 EFS 安装到 ec2 实例。
但是,现在在 EFS 中运行
Error: EACCES: permission denied
命令时,EC2 实例失败并显示 mkdir
;
问题:
如何使用同一接入点将 EFS 安装到 EC2 实例和 lambda 函数?
如果我应该使用单独的访问点,当双方都需要访问和修改 EFS 中的同一文件时,是否会有任何陷阱?
EC2 实例通常使用编号较大的用户 ID 作为与已安装文件系统交互的用户帐户。 另一方面,Lambda 函数使用更受限制的执行环境以及较少的用户 ID。 因此,很难将接入点配置为使用与 EC2 实例和 Lambda 函数兼容的设置。另外我认为你只需要进行试验和错误方法。 2) 当多方同时访问同一文件时,您需要小心潜在的并发问题,例如竞争条件或文件锁定。根据应用程序的要求,您可能需要实现安全处理并发访问的机制。而且如果存在大量并发访问也会影响性能。请务必监控性能指标并根据需要进行调整*