📅  最后修改于: 2023-12-03 15:11:49.282000             🧑  作者: Mango
在Javascript中下载AWS S3文件通常使用AWS SDK for Javascript。
以下是一个例子,演示如何使用Node.js下载S3文件。
要开始使用AWS SDK for Javascript,需要先安装它:
npm install aws-sdk
使用AWS SDK for Javascript需要 AWS access key ID和 AWS secret access key。这些凭据需要授予对特定S3存储桶的访问权限。AWS Credentials 配置文件默认存储在~/.aws/credentials中。
但是为了更安全地管理凭据,AWS建议使用IAM角色或在环境变量中设置凭据。
如果在本地执行此代码,则应创建一个IAM用户并将访问密钥ID和密钥保存在本地配置文件中。如果是在AWS Lambda中运行,则应将凭据设置为Lambda函数IAM角色。
为了从S3下载文件,需要几个步骤:
下面的代码演示如何实现这些步骤:
const AWS = require('aws-sdk');
const fs = require('fs');
// 初始化AWS SDK
AWS.config.update({ region: 'us-east-1' });
// 确定S3 Bucket名称和对象键
const bucketName = 'my-bucket-name';
const keyName = 'path/to/my/file.txt';
// 获取S3对象元数据
const s3 = new AWS.S3();
s3.headObject({ Bucket: bucketName, Key: keyName }, function(err, metadata) {
if (err) {
console.error(err);
return;
}
// 确定下载选项
const downloadParams = {
Bucket: bucketName,
Key: keyName,
};
// 下载S3对象到本地
const fileStream = fs.createWriteStream('/path/to/my/file.txt');
const s3Stream = s3.getObject(downloadParams).createReadStream();
s3Stream.on('error', function() {
console.error(err);
});
s3Stream.pipe(fileStream).on('error', function(err) {
console.error(err);
}).on('close', function() {
console.log('Successfully downloaded file.');
});
});
在这个例子中,我们使用AWS SDK for Javascript获取某个文件的元数据。使用元数据,我们确定要下载的文件的正确参数。
一旦确定要下载的文件的正确参数,我们创建一个本地文件流和一个S3文件流,然后将它们连接起来。当S3文件流结束时,本地文件将包含完整的文件。