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

如何用Node.js获取S3存储桶中最新文件夹内的最新文件名

使用Node.js获取Amazon S3存储桶中最新文件夹内的最新文件名

前提准备

先安装AWS官方推荐的JavaScript SDK v3,执行以下命令:

npm install @aws-sdk/client-s3

实现步骤与代码

  1. 初始化S3客户端
    建议通过环境变量配置AWS凭证和区域,避免硬编码敏感信息:

    const { S3Client, ListObjectsV2Command } = require("@aws-sdk/client-s3");
    
    const s3Client = new S3Client({
      region: "你的存储桶区域", // 例如 'us-east-1'
      // 凭证可通过环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY自动加载
    });
    
  2. 获取存储桶内所有对象的键
    S3的"文件夹"本质是对象键的前缀,先获取所有对象的完整键:

    async function getAllObjectKeys(bucketName) {
      const command = new ListObjectsV2Command({ Bucket: bucketName });
      const response = await s3Client.send(command);
      return response.Contents.map(item => item.Key);
    }
    
  3. 解析键并筛选最新文件
    遍历所有键,提取日期信息后排序,找到最新的文件:

    async function getLatestFileName(bucketName) {
      const keys = await getAllObjectKeys(bucketName);
      if (keys.length === 0) return null;
    
      const sortedFiles = keys
        .filter(key => key.endsWith('.txt'))
        .map(key => {
          // 从文件名提取8位日期(如filename_20230301.txt中的20230301)
          const dateMatch = key.match(/(\d{8})\.txt$/);
          if (!dateMatch) return null;
          return {
            key,
            date: new Date(
              dateMatch[1].slice(0,4),
              dateMatch[1].slice(4,6)-1,
              dateMatch[1].slice(6,8)
            )
          };
        })
        .filter(item => item !== null)
        .sort((a, b) => b.date - a.date); // 按日期降序排列
    
      if (sortedFiles.length === 0) return null;
      // 返回文件名(从完整键中提取最后一段)
      return sortedFiles[0].key.split('/').pop();
    }
    
  4. 调用函数获取结果

    const bucketName = "你的存储桶名称";
    getLatestFileName(bucketName)
      .then(fileName => {
        fileName ? console.log("最新文件名:", fileName) : console.log("未找到符合条件的txt文件");
      })
      .catch(err => console.error("获取失败:", err));
    

补充说明

如果需要依赖年份/月份文件夹层级判断新旧,可先筛选出最新的年份前缀,再筛选对应年份下的最新月份前缀,最后取该月份下的文件,核心逻辑仍是解析键并排序,只需调整筛选规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:20:17