AWS SDK JavaScript S3 管理下载
JavaScript SDK管理下载可以用于自定义的S3下载. 客户端可以配置管理下下载的选项,例如块大小和同时传输的次数.
安装
在节点.js
这个软件包目前只在Node.js版本6+中工作. 由npm包管理器为Node.js安装管理下载包. 在终端窗口中输入以下命令.
npm install @aws/s3-managed-download
文档
您可以为管理下载软件包找到完整的文档 这里。 。 。 .
配置
您可以设置最大部分大小和最大货币选项, 为管理下下载自定义部分大小和并行下载次数 。 最大PartSize 选项可以控制每个传输部分的字节大小。 最大货币选项指定将平行下载的部件数量和随时在内存中缓冲的最大部件数量.
导入管理下载软件包
您需要一个 S3 客户端来创建一个有管理的下载, 所以将 aws- sdk 与有管理的下载软件包一起导入 .
Java 脚本
const S3 = require('aws-sdk/clients/s3');
const ManagedDownloader = require('@aws/s3-managed-download').ManagedDownloader;
类型脚本
import * as S3 from 'aws-sdk/clients/s3';
import { ManagedDownloader, GetObjectStreamInput, ManagedDownloaderOptions } from '@aws/s3-managed-download';
用默认部分大小和货币创建管理下载
创建 AWS S3 客户端,并将客户端传入"管理下载"构建器,以创建"管理下载",部分大小为 5MB,货币为 1.
Java 脚本
const s3 = new S3();
const managedDownloader = new ManagedDownloader(s3);
类型脚本
const s3:S3 = new S3();
const managedDownloader:ManagedDownloader = new ManagedDownloader(s3);
创建自定义部分大小和货币管理下载
创建 AWS S3 客户端并管理下载选项. 将客户端和选项传入管理下载构建器,以创建自定义部分大小为10MB和货币为5的"管理下载".
Java 脚本
const s3 = new S3();
const options = {
maxPartSize: 10 * 1024 * 1024,
maxConcurrency: 5
};
const managedDownloader = new ManagedDownloader(s3, options);
类型脚本
const s3:S3 = new S3();
const options:ManagedDownloaderOptons = {
maxPartSize: 10 * 1024 * 1024,
maxConcurrency: 5
};
const managedDownloader:ManagedDownloader = new ManagedDownloader(s3, options);
实例
目前,"管理下载"只包含一个流出下载操作,它可以为整个文件或特定范围或文件的一部分工作. 以下是一些例子: 如何使用“管理下载”Get ObjectStream下载操作.
1. 使用管理下载对象为 S3 上的文件创建下载流
从桶中获取“ 例- 键” 文件, 并使用“ objectStream” 方法创建本地文件 .
Java 脚本
const S3 = require('aws-sdk/clients/s3');
const ManagedDownloader = require('@aws/s3-managed-download').ManagedDownloader;
const fs = require('fs');
const s3 = new S3();
const managedDownloader = new ManagedDownloader(s3);
const params = {
Bucket: 'example-bucket',
Key: 'example-key'
};
// create a write stream for a file
const writeStream = fs.createWriteStream('example-file-path');
managedDownloader.getObjectStream(params)
.then((stream) => {
stream.pipe(writeStream);
}, (err) => {
writeStream.end();
console.error(err);
});
类型脚本
import * as S3 from 'aws-sdk/clients/s3';
import { ManagedDownloader, GetObjectStreamInput, ManagedDownloaderOptions } from '@aws/s3-managed-download';
import * as fs from 'fs';
const s3:S3 = new S3();
const managedDownloader:ManagedDownloader = new ManagedDownloader(s3);
const params:GetObjectStreamInput = {
Bucket: 'example-bucket',
Key: 'example-key'
};
// create a write stream for a file
const writeStream:fs.WriteStream = fs.createWriteStream('example-file-path');
managedDownloader.getObjectStream(params)
.then((stream) => {
stream.pipe(writeStream);
}, (err) => {
writeStream.end();
console.error(err);
});
2. 使用管理下载对象为 S3 上的文件的字节创建下载流
从桶中获取“ 例- 键” 文件, 并使用“ objectStream” 方法在“ 例- 文件- 路径” 上写入本地文件的字节100- 150 .
Java 脚本
const S3 = require('aws-sdk/clients/s3');
const ManagedDownloader = require('@aws/s3-managed-download').ManagedDownloader;
const fs = require('fs');
const s3 = new S3();
const managedDownloader = new ManagedDownloader(s3);
const params = {
Bucket: 'example-bucket',
Key: 'example-key',
Range: '100-150'
};
// create a write stream for a file starting at byte 100
const writeStream = fs.createWriteStream('example-file-path', {start:100});
managedDownloader.getObjectStream(params)
.then((stream) => {
stream.pipe(writeStream);
}, (err) => {
writeStream.end();
console.error(err);
});
类型脚本
import * as S3 from 'aws-sdk/clients/s3';
import { ManagedDownloader, GetObjectStreamInput, ManagedDownloaderOptions } from '@aws/s3-managed-download';
import * as fs from 'fs';
const s3:S3 = new S3();
const managedDownloader:ManagedDownloader = new ManagedDownloader(s3);
const params:GetObjectStreamInput = {
Bucket: 'example-bucket',
Key: 'example-key',
Range: '100-150'
};
// create a write stream for a file starting at byte 100
const writeStream:fs.WriteStream = fs.createWriteStream('example-file-path', {start:100});
managedDownloader.getObjectStream(params)
.then((stream) => {
stream.pipe(writeStream);
}, (err) => {
writeStream.end();
console.error(err);
});
开幕问题
如果您找到任何错误或想要请求新特性, 请先检查已有的问题 。 如果没有问题,就开出一个新问题。 如果问题涉及错误,请包括堆栈痕量和重现的方法.
许可证
这个库根据Apache 2.0许可证获得许可.