AWS S3报错:Access Key ID未在AWS记录中找到,cPanel部署求助
解决方案
1. 核对cPanel环境变量配置
- 确保在cPanel的「Node.js应用」管理界面(或环境变量设置面板)中,已正确配置
AWS_ACCESSKEYID、AWS_SECRETACCESSKEY、AWS_REGION三个环境变量,变量名大小写必须和代码中的完全一致(比如代码用AWS_ACCESSKEYID就不能写成小写的aws_accesskeyid)。 - 检查变量值是否输入正确:避免末尾有空格、特殊字符,复制粘贴密钥时确保完整无遗漏。
- 设置完成后重启cPanel上的Node.js应用,部分环境变量需重启才能生效。
2. 验证环境变量是否被正确加载
在创建S3Client前添加临时调试日志,确认变量读取情况:
// 临时调试代码,上线前删除 console.log("AWS Access Key Loaded:", process.env.AWS_ACCESSKEYID); console.log("AWS Region Loaded:", process.env.AWS_REGION); const s3 = new S3Client({ region: process.env.AWS_REGION, credentials: { accessKeyId: process.env.AWS_ACCESSKEYID, secretAccessKey: process.env.AWS_SECRETACCESSKEY, }, });
部署后查看cPanel应用的日志:
- 如果日志中
AWS Access Key Loaded为空或显示错误值,说明环境变量未正确配置; - 如果值正确,再排查其他原因。
3. 检查IAM密钥的权限与限制
- 登录AWS控制台,进入IAM服务,找到对应密钥所属的IAM用户:
- 确认密钥状态为「Active」,未被删除或禁用;
- 检查用户的权限策略,确保包含S3操作所需的权限(如
s3:PutObject、s3:GetObject等); - 查看是否设置了IP访问限制:如果IAM策略中添加了
SourceIp条件,需将cPanel服务器的公网IP加入允许列表,否则AWS会拒绝非授权IP的请求(可能表现为密钥未找到的错误)。
4. 匹配Node.js版本与依赖
- 确认cPanel上的Node.js版本与本地开发环境一致:如果本地用Node 18+,cPanel用低版本(如Node 14),可能导致
@aws-sdk/client-s3依赖兼容问题,引发密钥读取错误。 - 在cPanel终端进入应用目录,执行
npm ls @aws-sdk/client-s3,确认依赖已正确安装,无版本冲突。
5. 排除部署时的配置遗漏
- 确保未将本地的
.env文件上传至cPanel:cPanel的Node.js环境默认不会读取.env文件,必须通过cPanel自带的环境变量面板配置; - 检查应用部署包是否完整,没有遗漏
node_modules目录或相关依赖文件。
内容的提问来源于stack exchange,提问作者Muhammad Hamza
相关产品推荐
相关产品推荐

