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

使用@aws-sdk/client-s3 v3.481.0时ListBucketsCommand类型不匹配报错求助

问题解决:@aws-sdk/client-s3 send方法类型错误

错误核心原因

  1. 命令参数混淆:ListBucketsCommand 用于列出当前AWS账号下所有S3存储桶,它不需要 Bucket 和 MaxKeys 参数——你把它和用于列出指定存储桶内对象的ListObjectsV2Command搞混了。
  2. 类型不兼容触发:错误提示的类型不匹配问题,本质是传递了错误的参数给ListBucketsCommand,导致命令实例不符合send方法的参数要求。

修正后的代码

先确保正确导入所需模块:

import { S3Client, ListBucketsCommand, ListObjectsV2Command } from "@aws-sdk/client-s3";

场景1:列出所有存储桶

const S3_Config = {
  region: process.env.S3_REGION,
  credentials: {
    accessKeyId: process.env.S3_ACCESS_KEY_ID,
    secretAccessKey: process.env.S3_ACCESS_SECRET_KEY,
  },
};
const s3_client = new S3Client(S3_Config);

// ListBucketsCommand 无需额外参数
const _command = new ListBucketsCommand({});
const response = await s3_client.send(_command);
console.log(response.Buckets);

场景2:列出指定存储桶内的对象

改用ListObjectsV2Command实现你的需求:

const S3_Config = {
  region: process.env.S3_REGION,
  credentials: {
    accessKeyId: process.env.S3_ACCESS_KEY_ID,
    secretAccessKey: process.env.S3_ACCESS_SECRET_KEY,
  },
};
const s3_client = new S3Client(S3_Config);

const s3_params = {
  Bucket: process.env.S3_BUCKET_NAME, // 必填
  MaxKeys: 20,
};

const _command = new ListObjectsV2Command(s3_params);
const response = await s3_client.send(_command);
console.log(response.Contents);

额外验证项

  • 确认package.json中@aws-sdk/client-s3版本确实为^3.481.0,可执行npm list @aws-sdk/client-s3验证。
  • 检查环境变量S3_REGION、S3_ACCESS_KEY_ID等是否配置正确,无空值。

内容的提问来源于stack exchange,提问作者Rafat Sarosh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:17:15