📜  节点下载 s3 文件 - Javascript (1)

📅  最后修改于: 2023-12-03 15:11:49.282000             🧑  作者: Mango

节点下载 S3 文件 - Javascript

在Javascript中下载AWS S3文件通常使用AWS SDK for Javascript。

以下是一个例子,演示如何使用Node.js下载S3文件。

安装AWS SDK for Javascript

要开始使用AWS SDK for Javascript,需要先安装它:

npm install aws-sdk
获取AWS凭据

使用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文件

为了从S3下载文件,需要几个步骤:

  1. 初始化AWS SDK for Javascript。
  2. 确定S3 Bucket名称和对象键。
  3. 获取S3对象元数据。
  4. 确定下载选项。
  5. 下载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文件流结束时,本地文件将包含完整的文件。