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

使用AdminJs上传文件至AWS S3时遇凭证加载错误求助

解决AdminJS AWS S3上传凭证加载错误 Could not load credentials from any providers

问题分析

本地文件上传正常,但使用AWS S3 Provider时出现凭证加载失败,且已在独立Express项目验证凭证有效,问题大概率出在AdminJS上传插件的AWS配置方式或SDK版本适配。

解决方案

1. 修正AWS配置字段层级

AdminJS的@adminjs/upload依赖AWS SDK v3,其S3客户端配置要求凭证嵌套在credentials对象中,而非顶层直接传递。修改你的awsProvider配置:

const awsProvider: AWSOptions = {
  credentials: {
    accessKeyId: '你的实际AccessKey',
    secretAccessKey: '你的实际SecretKey',
  },
  region: '你的桶所在区域',
  bucket: '你的S3桶名称',
};

2. 使用环境变量注入凭证(推荐)

避免硬编码凭证,使用dotenv管理环境变量,降低配置错误风险:

  • 安装dotenv:
npm install dotenv
  • 项目根目录创建.env文件:
AWS_ACCESS_KEY_ID=你的AccessKey
AWS_SECRET_ACCESS_KEY=你的SecretKey
AWS_REGION=你的区域
AWS_BUCKET_NAME=你的桶名
  • 在代码中加载并使用环境变量:
import dotenv from 'dotenv';
dotenv.config();

const awsProvider: AWSOptions = {
  credentials: {
    accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,
  },
  region: process.env.AWS_REGION!,
  bucket: process.env.AWS_BUCKET_NAME!,
};

3. 验证SDK版本兼容性

确认@adminjs/upload依赖的AWS SDK版本与你独立项目的差异:

  • AdminJS上传插件默认使用AWS SDK v3,若你独立项目用的是v2,配置方式不同,需统一为v3的配置格式(即上述嵌套credentials的方式)。

4. 检查IAM权限与桶策略

确保你的AWS IAM用户拥有以下S3权限:

  • s3:PutObject(上传文件)
  • s3:GetObject(读取文件,用于AdminJS展示)
  • s3:DeleteObject(若需要删除功能)

同时确认S3桶的策略允许该IAM用户执行上述操作。

验证修改

修改配置后重启AdminJS服务,尝试上传文件,若仍有错误,可开启AWS SDK日志排查:

import { Logger } from '@aws-sdk/types';

const awsProvider: AWSOptions = {
  // ...其他配置
  logger: console as unknown as Logger,
};

内容的提问来源于stack exchange,提问作者Jay Kukadiya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:26:04