如何在Node.js中通过aws-sdk的getObject访问S3桶sp目录下的文件
Node.js调用aws-sdk访问S3指定子目录文件的实现方法
S3是对象存储服务,不存在真实的文件系统目录结构,你提到的
/sp子目录本质是对象键的固定前缀,调用getObject时只需要将目标文件名拼在sp/前缀后作为Key参数传入即可。
1. 前置准备
- 安装对应版本的aws-sdk:
- 如果你使用AWS SDK v2:执行命令
npm install aws-sdk - 如果你使用AWS SDK v3(新版本推荐):执行命令
npm install @aws-sdk/client-s3
- 如果你使用AWS SDK v2:执行命令
- 提前配置好AWS访问凭证,确保凭证拥有对应S3存储桶的
s3:GetObject权限,不要在代码中硬编码明文凭证。
2. AWS SDK v2 示例代码
const AWS = require('aws-sdk'); // 替换为你存储桶实际所属的AWS区域 AWS.config.update({ region: 'us-east-1' }); const s3 = new AWS.S3(); const bucketName = 'aruba-get-rds-backups.getaws.arubanetworks.com'; // 替换为你要访问的sp目录下的实际文件名 const targetFileName = 'backup_20240101.sql'; const params = { Bucket: bucketName, Key: `sp/${targetFileName}` }; // 回调写法 s3.getObject(params, (err, data) => { if (err) { console.error('获取文件失败: ', err); throw err; } // data.Body为文件内容的Buffer对象,可按需处理 console.log('文件大小:', data.ContentLength); // 转字符串示例:const content = data.Body.toString() // 写入本地文件示例:require('fs').writeFileSync('./local_backup.sql', data.Body) }); // Promise写法可选: // s3.getObject(params).promise().then(data => {}).catch(err => {})
3. AWS SDK v3 示例代码
const { S3Client, GetObjectCommand } = require('@aws-sdk/client-s3'); // 替换为你存储桶实际所属的AWS区域 const s3Client = new S3Client({ region: 'us-east-1' }); const bucketName = 'aruba-get-rds-backups.getaws.arubanetworks.com'; // 替换为你要访问的sp目录下的实际文件名 const targetFileName = 'backup_20240101.sql'; const getObjectParams = { Bucket: bucketName, Key: `sp/${targetFileName}` }; const getFile = async () => { try { const command = new GetObjectCommand(getObjectParams); const response = await s3Client.send(command); // 文本类文件转字符串示例:const content = await response.Body.transformToString() // 写入本地文件示例:await require('fs/promises').writeFile('./local_backup.sql', response.Body) console.log('文件获取成功,大小:', response.ContentLength); } catch (err) { console.error('获取文件失败:', err); throw err; } }; getFile();
补充说明
如果你需要先遍历sp目录下的所有文件再批量获取,可以调用listObjectsV2方法,将Prefix参数设为sp/即可拿到该前缀下的所有对象列表,再逐个调用getObject处理即可。
内容的提问来源于stack exchange,提问作者Chiranjeevi Chennupati
相关产品推荐
相关产品推荐

