JavaScript 客户端 API 参考
初始化 MinIO 客户端对象。
MinIO
import * as Minio from 'minio'
const minioClient = new Minio.Client({
endPoint: 'play.min.io',
port: 9000,
useSSL: true,
accessKey: 'Q3AM3UQ867SPQQA43P2F',
secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
})
AWS S3
import * as Minio from 'minio'
const s3Client = new Minio.Client({
endPoint: 's3.amazonaws.com',
accessKey: 'YOUR-ACCESSKEYID',
secretKey: 'YOUR-SECRETACCESSKEY',
})
存储桶操作 |
对象操作 |
预签名操作 |
存储桶策略和通知操作 |
自定义设置 |
|
---|---|---|---|---|---|
1. 构造函数
new Minio.Client ({endPoint, port, useSSL, accessKey, secretKey, region, transport, sessionToken, partSize})
|
初始化一个新的客户端对象。 |
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
endPoint 是一个主机名或 IP 地址。 |
|
数字 |
TCP/IP 端口号。此输入是可选的。默认值为 HTTP 的 80 和 HTTPs 的 443。 |
|
布尔值 |
如果设置为 true,则使用 https 而不是 http。默认值为 true。 |
|
字符串 |
accessKey 是一个类似用户 ID 的值,用于唯一标识您的帐户。 |
|
字符串 |
secretKey 是您帐户的密码。 |
|
字符串 |
设置此值以提供 x-amz-security-token(AWS S3 特定)。(可选) |
|
字符串 |
设置此值以覆盖区域缓存。(可选) |
|
字符串 |
设置此值以传入自定义传输。(可选) |
|
数字 |
设置此值以覆盖多部分上传的默认部分大小 64MB。(可选) |
|
布尔值 |
设置此值以覆盖非 AWS 端点的默认访问行为(路径)。默认值为 true。(可选) |
|
设置此值以提供自定义 HTTP(s) 代理来处理超时、TLS 处理和低级套接字配置。(可选) |
示例
为 MinIO 创建客户端
import * as Minio from 'minio'
const minioClient = new Minio.Client({
endPoint: 'play.min.io',
port: 9000,
useSSL: true,
accessKey: 'Q3AM3UQ867SPQQA43P2F',
secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
})
为 AWS S3 创建客户端
import * as Minio from 'minio'
const s3Client = new Minio.Client({
endPoint: 's3.amazonaws.com',
accessKey: 'YOUR-ACCESSKEYID',
secretKey: 'YOUR-SECRETACCESSKEY',
})
使用临时凭据创建客户端
import * as Minio from 'minio'
const s3Client = new Minio.Client({
endPoint: 's3.amazonaws.com',
accessKey: 'YOUR-TEMP-ACCESSKEYID',
secretKey: 'YOUR-TEMP-SECRETACCESSKEY',
sessionToken: 'YOUR-TEMP-SESSIONTOKEN',
})
使用自定义 HTTPS 代理创建客户端
import * as Minio from 'minio'
import * as fs from 'fs'
import * as https from 'https'
const s3Client = new Minio.Client({
endPoint: 'play.min.io',
port: 9000,
useSSL: true,
accessKey: 'Q3AM3UQ867SPQQA43P2F',
secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
transportAgent: new https.Agent({
timeout: 10000,
ca: fs.readFileSync('path/to/ca.cert'),
cert: fs.readFileSync('path/to/public.cert'),
key: fs.readFileSync('path/to/secret.key'),
keepAlive: false,
}),
})
注意:以下示例可能依赖于顶级 await。
2. 存储桶操作
async makeBucket(bucketName, [region, makeOpts]): Promise
创建一个新的存储桶。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
创建存储桶的区域。此参数是可选的。默认值为 us-east-1。 |
|
object |
创建存储桶的选项。例如 |
示例
await minioClient.makeBucket('mybucket', 'us-east-1')
console.log('Bucket created successfully in "us-east-1".')
示例 1 创建一个启用了对象锁定的存储桶。
minioClient.makeBucket('mybucket', 'us-east-1', { ObjectLocking: true }, function (err) {
if (err) return console.log('Error creating bucket with object lock.', err)
console.log('Bucket created successfully in "us-east-1" and enabled object lock')
})
listBuckets()
列出所有存储桶。
参数
NIL
返回格式为以下对象的数组:
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶名称 |
|
日期 |
创建存储桶的日期。 |
示例
请参阅:list-buckets.mjs
try {
const buckets = await minioClient.listBuckets()
console.log('Success', buckets)
} catch (err) {
console.log(err.message)
}
async bucketExists(bucketName): Promise
检查存储桶是否存在。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
示例
const exists = await minioClient.bucketExists('mybucket')
if (exists) {
return console.log('Bucket exists.')
}
removeBucket(bucketName[, callback])
删除一个存储桶。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
function |
如果存储桶成功删除, |
示例
try {
await minioClient.removeBucket('mybucket')
console.log('Bucket removed successfully.')
} catch (err) {
console.log('unable to remove bucket.')
}
listObjects(bucketName, prefix, recursive [,listOpts])
列出存储桶中的所有对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
要列出的对象的名称前缀(可选,默认值为 |
|
布尔值 |
|
|
object |
列出对象的查询参数,其中可能包含 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
Stream |
发射存储桶中对象的流。 |
对象的格式如下:
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
对象的名称。 |
|
字符串 |
对象前缀的名称。 |
|
数字 |
对象的大小。 |
|
字符串 |
对象的 ETag。 |
|
字符串 |
对象的版本 ID。 |
|
boolean |
如果它是一个删除标记,则为 true。 |
|
日期 |
修改时间戳。 |
示例
const data = []
const stream = minioClient.listObjects('mybucket', '', true)
stream.on('data', function (obj) {
data.push(obj)
})
stream.on('end', function () {
console.log(data)
})
stream.on('error', function (err) {
console.log(err)
})
示例 1 获取对象版本
const data = []
const stream = minioClient.listObjects('mybucket', '', true, { IncludeVersion: true })
stream.on('data', function (obj) {
data.push(obj)
})
stream.on('end', function () {
console.log(data)
})
stream.on('error', function (err) {
console.log(err)
})
listObjectsV2(bucketName, prefix, recursive, startAfter)
使用 S3 列出对象 V2 API 列出存储桶中的所有对象
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
要列出的对象的名称前缀(可选,默认值为 |
|
布尔值 |
|
|
字符串 |
指定在存储桶中列出对象时开始后的对象名称。(可选,默认值为 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
Stream |
发射存储桶中对象的流。 |
对象的格式如下:
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
对象的名称。 |
|
字符串 |
对象前缀的名称。 |
|
数字 |
对象的大小。 |
|
字符串 |
对象的 ETag。 |
|
日期 |
修改时间戳。 |
示例
const stream = minioClient.listObjectsV2('mybucket', '', true, '')
stream.on('data', function (obj) {
console.log(obj)
})
stream.on('error', function (err) {
console.log(err)
})
listObjectsV2WithMetadata(bucketName, prefix, recursive, startAfter)
使用 S3 列出对象 V2 API 列出存储桶中的所有对象及其元数据
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
要列出的对象的名称前缀(可选,默认值为 |
|
布尔值 |
|
|
字符串 |
指定在存储桶中列出对象时开始后的对象名称。(可选,默认值为 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
Stream |
发射存储桶中对象的流。 |
对象的格式如下:
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
对象的名称。 |
|
字符串 |
对象前缀的名称。 |
|
数字 |
对象的大小。 |
|
字符串 |
对象的 ETag。 |
|
日期 |
修改时间戳。 |
|
object |
对象的元数据。 |
示例
const stream = minioClient.extensions.listObjectsV2WithMetadata('mybucket', '', true, '')
stream.on('data', function (obj) {
console.log(obj)
})
stream.on('error', function (err) {
console.log(err)
})
listIncompleteUploads(bucketName, prefix, recursive)
列出存储桶中部分上传的对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
部分上传的对象名称的前缀。(可选,默认值为 |
|
布尔值 |
|
返回值
参数 |
类型 |
描述 |
---|---|---|
|
Stream |
发射以下格式的对象: |
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
对象的名称。 |
|
字符串 |
对象的上传 ID。 |
|
Integer |
部分上传对象的大小。 |
示例
const Stream = minioClient.listIncompleteUploads('mybucket', '', true)
Stream.on('data', function (obj) {
console.log(obj)
})
Stream.on('end', function () {
console.log('End')
})
Stream.on('error', function (err) {
console.log(err)
})
getBucketVersioning(bucketName)
获取存储桶的版本控制状态
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
示例
const versionInfo = await minioClient.getBucketVersioning('bucketname')
console.log('Success ', versionInfo)
setBucketVersioning(bucketName, versioningConfig)
在存储桶上设置版本控制状态
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
object |
版本控制配置,例如: |
示例
const versioningConfig = { Status: 'Enabled' }
await minioClient.setBucketVersioning('bucketname', versioningConfig)
setBucketReplication(bucketName, replicationConfig)
在存储桶上设置复制配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
object |
复制配置作为 JSON 对象 |
示例
const arnFromMcCli = 'arn:minio:replication::b22d653b-e4fb-4c5d-8140-7694c8e72ed4:dest-bucket'
const replicationConfig = {
role: arnFromMcCli,
rules: [
{
ID: 'cisea130mbms6splbmg0',
Status: 'Enabled',
Priority: 1,
DeleteMarkerReplication: { Status: 'Enabled' },
DeleteReplication: { Status: 'Enabled' },
Destination: {
Bucket: 'arn:aws:s3:::dest-bucket',
StorageClass: 'REDUCED_REDUNDANCY',
},
SourceSelectionCriteria: { ReplicaModifications: { Status: 'Enabled' } },
Filter: {
//Possible values.
// Prefix: '/',
// Tag: [{ 'Key': 'key1', 'Value': 'value1' }, { 'Key': 'key2', 'Value': 'value2' }],//if only this, => 'DeleteMarkerReplication': { 'Status': 'Disabled' },
And: {
Prefix: '/',
Tag: [
{ Key: 'key1', Value: 'value1' },
{ Key: 'key2', Value: 'value2' },
],
},
},
ExistingObjectReplication: { Status: 'Enabled' },
},
],
}
await s3Client.setBucketReplication('source-bucket', replicationConfig)
getBucketReplication(bucketName)
获取存储桶的复制配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
示例
const replicatinConfig = await minioClient.getBucketReplication('source-bucket')
console.log(replicatinConfig)
removeBucketReplication(bucketName)
删除存储桶的复制配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
示例
await minioClient.removeBucketReplication('source-bucket')
removeBucketTagging(bucketName, callback)
删除存储桶上的标签
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
示例
await minioClient.removeBucketTagging('bucketname')
getBucketTagging(bucketName)
获取存储桶上的标签
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
示例
const tagList = await minioClient.getBucketTagging('bucketname')
console.log(tagList)
setBucketLifecycle(bucketName, lifecycleConfig)
在存储桶上设置生命周期配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
object |
有效的生命周期配置或( |
示例
const lifecycleConfig = {
Rule: [
{
ID: 'Transition and Expiration Rule',
Status: 'Enabled',
Filter: {
Prefix: '',
},
Expiration: {
Days: '3650',
},
},
],
}
await minioClient.setBucketLifecycle('bucketname', lifecycleConfig)
getBucketLifecycle(bucketName)
获取存储桶的生命周期配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
示例
await minioClient.getBucketLifecycle('bucketname')
removeBucketLifecycle(bucketName)
删除存储桶的生命周期配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
示例
await minioClient.removeBucketLifecycle('bucketname')
setObjectLockConfig(bucketName, lockConfig [, callback])
在存储桶上设置对象锁定配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
object |
锁定配置可以是 |
示例 1
await minioClient.setObjectLockConfig('my-bucketname', { mode: 'COMPLIANCE', unit: 'Days', validity: 10 })
示例 2 在存储桶上重置/删除对象锁定配置。
await s3Client.setObjectLockConfig('my-bucketname', {})
getObjectLockConfig(bucketName [, callback])
获取存储桶上的锁定配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
**示例** 获取存储桶上的对象锁定配置
await minioClient.getObjectLockConfig('my-bucketname')
setBucketEncryption(bucketName [,encryptionConfig])
在存储桶上设置加密配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
object |
加密配置可以省略,也可以是 |
**示例** 在存储桶上设置加密配置
await s3Client.setBucketEncryption('my-bucketname')
示例 1 使用算法在存储桶上设置加密配置
await s3Client.setBucketEncryption('my-bucketname', {
Rule: [{ ApplyServerSideEncryptionByDefault: { SSEAlgorithm: 'AES256' } }],
})
getBucketEncryption(bucketName)
获取存储桶的加密配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
**示例** 获取存储桶的加密配置
await s3Client.getBucketEncryption('my-bucketname')
removeBucketEncryption(bucketName)
删除存储桶的加密配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
**示例** 删除存储桶的加密配置
await s3Client.removeBucketEncryption('my-bucketname')
3. 对象操作
getObject(bucketName, objectName, getOpts)
将对象作为流下载。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
object |
获取对象的选项。默认值为 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
|
发射对象内容的流。 |
示例
let size = 0
const dataStream = await minioClient.getObject('mybucket', 'photo.jpg')
dataStream.on('data', function (chunk) {
size += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function (err) {
console.log(err)
})
示例
获取特定对象版本。
let size = 0
const dataStream = await minioClient.getObject('mybucket', 'photo.jpg', { versionId: 'my-versionId' })
dataStream.on('data', function (chunk) {
size += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function (err) {
console.log(err)
})
示例
获取服务器端加密的对象。
let size = 0
const dataStream = await minioClient.getObject('mybucket', 'photo.jpg', {
SSECustomerAlgorithm: 'AES256',
SSECustomerKey: 'YOUR_KEY',
SSECustomerKeyMD5: 'YOUR_MD5',
})
dataStream.on('data', function (chunk) {
size += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function (err) {
console.log(err)
})
getPartialObject(bucketName, objectName, offset, length, getOpts[, callback])
将对象的指定范围字节作为流下载。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
数字 |
对象中流将从其开始的 |
|
数字 |
流中将读取的对象的 |
|
object |
获取对象的选项。默认值为 |
|
function |
如果发生错误,则回调将使用 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
Stream |
发射对象内容的流。 |
示例
let size = 0
// reads 30 bytes from the offset 10.
const dataStream = await minioClient.getPartialObject('mybucket', 'photo.jpg', 10, 30)
dataStream.on('data', function (chunk) {
size += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + size)
})
dataStream.on('error', function (err) {
console.log(err)
})
示例 获取对象的特定版本
const versionedObjSize = 0
// reads 30 bytes from the offset 10.
const dataStream = await minioClient.getPartialObject('mybucket', 'photo.jpg', 10, 30, { versionId: 'my-versionId' })
dataStream.on('data', function (chunk) {
versionedObjSize += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + versionedObjSize)
})
dataStream.on('error', function (err) {
console.log(err)
})
示例 获取服务器端加密的对象。
const versionedObjSize = 0
// reads 30 bytes from the offset 10.
const dataStream = await minioClient.getPartialObject('mybucket', 'photo.jpg', 10, 30, {
SSECustomerAlgorithm: 'AES256',
SSECustomerKey: 'YOUR_KEY',
SSECustomerKeyMD5: 'YOUR_MD5',
})
dataStream.on('data', function (chunk) {
versionedObjSize += chunk.length
})
dataStream.on('end', function () {
console.log('End. Total size = ' + versionedObjSize)
})
dataStream.on('error', function (err) {
console.log(err)
})
fGetObject(bucketName, objectName, filePath, getOpts[, callback])
将对象下载并保存为本地文件系统中的文件。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
字符串 |
本地文件系统上对象数据将写入的路径。 |
|
object |
获取对象的选项。默认值为 |
|
function |
如果发生错误,则回调将使用 |
返回值
值 |
类型 |
描述 |
---|---|---|
|
object |
如果发生任何错误,则为错误 |
|
file |
指定 |
示例
minioClient.fGetObject('mybucket', 'photo.jpg', '/tmp/photo.jpg', function (err) {
if (err) {
return console.log(err)
}
console.log('success')
})
示例 将特定对象版本流式传输到文件。
minioClient.fGetObject(bucketName, objNameValue, './download/MyImage.jpg', { versionId: 'my-versionId' }, function (e) {
if (e) {
return console.log(e)
}
console.log('success')
})
示例 将服务器端加密的对象流式传输到文件。
minioClient.fGetObject(
bucketName,
objNameValue,
'./download/MyImage.jpg',
{
SSECustomerAlgorithm: 'AES256',
SSECustomerKey: 'YOUR_KEY',
SSECustomerKeyMD5: 'YOUR_MD5',
},
function (e) {
if (e) {
return console.log(e)
}
console.log('success')
},
)
putObject(bucketName, objectName, stream, size, metaData[, callback])
从流/缓冲区上传对象。
从流
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
Stream |
可读流。 |
|
数字 |
对象的大小(可选)。 |
|
Javascript 对象 |
对象的元数据(可选)。 |
|
function |
非空 |
返回值
值 |
类型 |
描述 |
---|---|---|
|
object |
如果发生任何错误,则为错误 |
|
字符串 |
对象的 |
|
字符串 |
对象的 |
示例
单个对象的最大大小限制为 5TB。putObject 会透明地将大于 64MiB 的对象上传为多个部分。上传的数据使用 MD5SUM 签名进行仔细验证。
import * as Fs from 'fs'
const file = '/tmp/40mbfile'
const fileStream = Fs.createReadStream(file)
const fileStat = Fs.stat(file, function (err, stats) {
if (err) {
return console.log(err)
}
minioClient.putObject('mybucket', '40mbfile', fileStream, stats.size, function (err, objInfo) {
if (err) {
return console.log(err) // err should be null
}
console.log('Success', objInfo)
})
})
从“Buffer”或“string”
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
Stream 或 Buffer |
可读流。 |
|
Javascript 对象 |
对象的元数据(可选)。 |
|
function |
非空 |
示例
const buffer = 'Hello World'
minioClient.putObject('mybucket', 'hello-file', buffer, function (err, etag) {
return console.log(err, etag) // err should be null
})
fPutObject(bucketName, objectName, filePath, metaData[, callback])
将文件内容上传到 objectName。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
字符串 |
要上传的文件的路径。 |
|
Javascript 对象 |
对象的元数据。 |
|
返回值
值 |
类型 |
描述 |
---|---|---|
|
object |
如果发生任何错误,则为错误 |
|
字符串 |
对象的 |
|
字符串 |
对象的 |
示例
单个对象的最大大小限制为 5TB。fPutObject 会透明地将大于 64MiB 的对象上传为多个部分。上传的数据使用 MD5SUM 签名进行仔细验证。
const file = '/tmp/40mbfile'
const metaData = {
'Content-Type': 'text/html',
'Content-Language': 123,
'X-Amz-Meta-Testing': 1234,
example: 5678,
}
minioClient.fPutObject('mybucket', '40mbfile', file, metaData, function (err, objInfo) {
if (err) {
return console.log(err)
}
console.log('Success', objInfo.etag, objInfo.versionId)
})
copyObject(targetBucketName, targetObjectName, sourceBucketNameAndObjectName [,conditions])
将源对象复制到指定存储桶中的新对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
字符串 |
要复制的文件的路径。 |
|
CopyConditions |
在允许对象复制之前要满足的条件。 |
示例
const conds = new Minio.CopyConditions()
conds.setMatchETag('bd891862ea3e22c93ed53a098218791d')
await minioClient.copyObject('mybucket', 'newobject', '/mybucket/srcobject', conds)
statObject(bucketName, objectName, statOpts[, callback])
获取对象的元数据。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
object |
对象的版本,格式为 |
|
function |
如果发生错误, |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
数字 |
对象的大小。 |
|
字符串 |
对象的 ETag。 |
|
字符串 |
对象的版本。 |
|
Javascript 对象 |
对象的元数据。 |
|
日期 |
最后修改时间戳。 |
示例
const stat = await minioClient.statObject('mybucket', 'photo.jpg')
console.log(stat)
对象版本上的示例 stat
const stat = await minioClient.statObject('mybucket', 'photo.jpg', { versionId: 'my-versionId' })
console.log(stat)
removeObject(bucketName, objectName [, removeOpts])
删除对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
object |
对象的版本,格式为 |
示例 1
;(async function () {
await minioClient.removeObject('mybucket', 'photo.jpg')
console.log('Removed the object')
})()
示例 2 删除对象的特定版本
;(async function () {
try {
await minioClient.removeObject('mybucket', 'photo.jpg', { versionId: 'my-versionId' })
console.log('Removed the object')
} catch (err) {
console.log('Unable to remove object', err)
}
})()
示例 3 使用 governanceBypass
删除选项删除使用保留模式 GOVERNANCE
锁定的对象版本
;(async function () {
await s3Client.removeObject('my-bucketname', 'my-objectname', { versionId: 'my-versionId', governanceBypass: true })
console.log('Success')
})()
removeObjects(bucketName, objectsList)
删除 objectsList 中的所有对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
object |
要删除的存储桶中的对象列表。任何一种格式:1. 对象名称列表,作为字符串数组,即对象键: |
示例
const objectsList = []
// List all object paths in bucket my-bucketname.
const objectsStream = s3Client.listObjects('my-bucketname', 'my-prefixname', true)
objectsStream.on('data', function (obj) {
objectsList.push(obj.name)
})
objectsStream.on('error', function (e) {
console.log(e)
})
objectsStream.on('end', async () => {
await s3Client.removeObjects(bucket, objectsList)
})
示例 1
支持版本控制
const objectsList = []
const bucket = 'my-bucket'
const prefix = 'my-prefix'
const recursive = false
const objectsStream = s3Client.listObjects(bucket, prefix, recursive, { IncludeVersion: true })
objectsStream.on('data', function (obj) {
objectsList.push(obj)
})
objectsStream.on('error', function (e) {
return console.log(e)
})
objectsStream.on('end', async () => {
await s3Client.removeObjects(bucket, objectsList)
})
removeIncompleteUpload(bucketName, objectName)
删除部分上传的对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
示例
await minioClient.removeIncompleteUpload('mybucket', 'photo.jpg')
async putObjectRetention(bucketName, objectName [, retentionOpts])
对对象应用保留策略。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
object |
保留策略选项,例如: |
示例 对对象应用对象保留策略
const bucketName = 'my-bucket'
const objectName = 'my-object'
const expirationDate = new Date()
expirationDate.setDate(expirationDate.getDate() + 1)
expirationDate.setUTCHours(0, 0, 0, 0) //Should be start of the day.(midnight)
const versionId = 'e67b4b08-144d-4fc4-ba15-43c3f7f9ba74'
await minioClient.putObjectRetention(bucketName, objectName, {
Mode: 'GOVERNANCE',
retainUntilDate: retainUntilDate.toISOString(),
versionId: versionId,
})
getObjectRetention(bucketName, objectName [, getOpts])
获取对象的保留策略配置
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
object |
保留策略选项,例如: |
示例 1
const retentionInfo = await minioClient.getObjectRetention('bucketname', 'objectname')
console.log(retentionInfo)
示例 2
const retInfoForVersionId = await minioClient.getObjectRetention('bucketname', 'objectname', {
versionId: 'my-versionId',
})
console.log(retInfoForVersionId)
removeObjectTagging(bucketName, objectName[, removeOpts])
删除对象的标签
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
object |
默认值为 {}。例如 |
示例
await minioClient.removeObjectTagging('bucketname', 'object-name')
示例 1 删除对象的版本的标签。
await minioClient.removeObjectTagging('bucketname', 'object-name', { versionId: 'my-object-version-id' })
getObjectTagging(bucketName, objectName[, getOpts])
获取对象的标签
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
object |
默认值为 {}。例如 |
示例
console.log(await minioClient.getObjectTagging('bucketname', 'object-name'))
示例 1 获取对象的版本的标签。
console.log(await minioClient.getObjectTagging('bucketname', 'object-name', { versionId: 'my-object-version-id' }))
getObjectLegalHold(bucketName, objectName, getOpts)
获取对象的法律保留策略。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
object |
法律保留策略配置选项。例如 |
示例 1
获取对象的法律保留策略。
const legalholdStatus = await minioClient.getObjectLegalHold('bucketName', 'objectName')
示例 2
获取具有 versionId 的对象的法律保留策略。
const legalholdStatus = await minioClient.getObjectLegalHold('bucketName', 'objectName', {
versionId: 'my-obj-version-uuid',
})
setObjectLegalHold(bucketName, objectName, [,setOpts])
对对象设置法律保留策略。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
object |
要设置的法律保留策略配置选项。例如 |
示例 1
设置对象的法律保留策略。
const legalholdStatus = await minioClient.setObjectLegalHold('bucketName', 'objectName', { Status: 'ON' })
示例 2
设置具有 versionId 的对象的法律保留策略。
const legalholdStatus = await minioClient.setObjectLegalHold('bucketName', 'objectName', {
Status: 'ON',
versionId: 'my-obj-version-uuid',
})
composeObject(destObjConfig, sourceObjectList)
从多个部分组合一个对象
参数
参数 |
类型 |
描述 |
---|---|---|
|
object |
目标对象的配置,类型为 CopyDestinationOptions |
|
object[] |
要组合成对象的源对象(部分)数组。每个部分的配置应为 CopySourceOptions 类型 |
示例 1
从其部分组合一个对象。
import * as minio from 'minio'
const sourceList = [
new minio.CopySourceOptions({
Bucket: 'source-bucket',
Object: 'parta',
}),
new minio.CopySourceOptions({
Bucket: 'source-bucket',
Object: 'partb',
}),
new minio.CopySourceOptions({
Bucket: 'source-bucket',
Object: 'partc',
}),
new minio.CopySourceOptions({
Bucket: 'source-bucket',
Object: 'partd',
}),
]
const destOption = new minio.CopyDestinationOptions({
Bucket: 'dest-bucket',
Object: '100MB.zip',
})
//using Promise style.
await minioClient.composeObject(destOption, sourceList)
selectObjectContent(bucketName, objectName, selectOpts)
选择对象的內容(S3 Select)。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
object |
示例 1 选择所有值
const selectOpts = {
expression: 'SELECT * FROM s3object s where s."Name" = \'Jane\'',
expressionType: 'SQL',
inputSerialization: {
CSV: { FileHeaderInfo: 'Use', RecordDelimiter: '\n', FieldDelimiter: ',' },
CompressionType: 'NONE',
},
outputSerialization: { CSV: { RecordDelimiter: '\n', FieldDelimiter: ',' } },
requestProgress: { Enabled: true },
}
const res = await minioClient.selectObjectContent('bucketName', 'objectName', selectOpts)
console.log(res)
4. 预签署操作
预签署 URL 用于临时下载/上传对私有对象的访问。
presignedUrl(httpMethod, bucketName, objectName[, expiry, reqParams, requestDate])
为提供的 HTTP 方法“httpMethod”生成一个预签署 URL。即使存储桶是私有的,浏览器/移动客户端也可以指向此 URL 来直接下载对象。此预签署 URL 可以具有关联的过期时间(以秒为单位),在此时间之后 URL 将不再有效。默认值为 7 天。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
数字 |
过期时间(以秒为单位)。默认值为 7 天。(可选) |
|
object |
请求参数。(可选)例如 {versionId:”10fa9946-3f64-4137-a58f-888065c0732e”} |
|
日期 |
日期对象,URL 将在此日期发出。默认值为现在。(可选) |
示例 1
// presigned url for 'getObject' method.
// expires in a day.
const presignedUrl = await minioClient.presignedUrl('GET', 'mybucket', 'hello.txt', 24 * 60 * 60)
console.log(presignedUrl)
示例 2
// presigned url for 'listObject' method.
// Lists objects in 'myBucket' with prefix 'data'.
// Lists max 1000 of them.
await minioClient.presignedUrl('GET', 'mybucket', '', 1000, { prefix: 'data', 'max-keys': 1000 })
示例 3
// Get Object with versionid
await minioClient.presignedUrl('GET', 'mybucket', '', 1000, { versionId: '10fa9946-3f64-4137-a58f-888065c0732e' })
presignedGetObject(bucketName, objectName[, expiry, respHeaders, requestDate])
为 HTTP GET 操作生成预签署 URL。即使存储桶是私有的,浏览器/移动客户端也可以指向此 URL 来直接下载对象。此预签署 URL 可以具有关联的过期时间(以秒为单位),在此时间之后 URL 将不再有效。默认值为 7 天。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
数字 |
过期时间(以秒为单位)。默认值为 7 天。(可选) |
|
object |
要覆盖的响应头(可选) |
|
日期 |
日期对象,URL 将在此日期发出。默认值为现在。(可选) |
示例
// expires in a day.
const presignedUrl = await minioClient.presignedGetObject('mybucket', 'hello.txt', 24 * 60 * 60)
console.log(presignedUrl)
presignedPutObject(bucketName, objectName [,expiry])
为 HTTP PUT 操作生成预签署 URL。即使存储桶是私有的,浏览器/移动客户端也可以指向此 URL 将对象直接上传到存储桶。此预签署 URL 可以具有关联的过期时间(以秒为单位),在此时间之后 URL 将不再有效。默认值为 7 天。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
对象的名称。 |
|
数字 |
过期时间(以秒为单位)。默认值为 7 天。 |
示例
// expires in a day.
const presignedUrl = await minioClient.presignedPutObject('mybucket', 'hello.txt', 24 * 60 * 60)
console.log(presignedUrl)
presignedPostPolicy(policy)
允许将策略条件设置为 POST 操作的预签署 URL。可以设置策略,例如接收对象上传的存储桶名称、键名称前缀、过期策略等。
参数
参数 |
类型 |
描述 |
---|---|---|
|
object |
由 minioClient.newPostPolicy() 创建的策略对象 |
创建策略
const policy = minioClient.newPostPolicy()
应用上传策略限制
// Policy restricted only for bucket 'mybucket'.
policy.setBucket('mybucket')
// Policy restricted only for hello.txt object.
policy.setKey('hello.txt')
或
// Policy restricted for incoming objects with keyPrefix.
policy.setKeyStartsWith('keyPrefix')
const expires = new Date()
expires.setSeconds(24 * 60 * 60 * 10)
// Policy expires in 10 days.
policy.setExpires(expires)
// Only allow 'text'.
policy.setContentType('text/plain')
// Set content disposition response header.
policy.setContentDisposition('attachment; filename=text.txt')
// Only allow content size in range 1KB to 1MB.
policy.setContentLengthRange(1024, 1024 * 1024)
// Set key-value user defined metadata
policy.setUserMetaData({
key: 'value',
})
使用 superagent
从浏览器 POST 您的内容
const { postURL, formData } = await minioClient.presignedPostPolicy(policy)
const req = superagent.post(postURL)
_.each(formData, function (value, key) {
req.field(key, value)
})
// file contents.
req.attach('file', '/path/to/hello.txt', 'hello.txt')
req.end(function (err, res) {
if (err) {
return console.log(err.toString())
}
console.log('Upload successful.')
})
5. 存储桶策略和通知操作
存储桶被配置为在指定的事件类型和路径过滤器上触发通知。
getBucketNotification(bucketName[, cb])
获取存储在 S3 提供商中且属于指定存储桶名称的通知配置。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
function |
如果出现错误,回调函数将使用非 |
示例
minioClient.getBucketNotification('mybucket', function (err, bucketNotificationConfig) {
if (err) return console.log(err)
console.log(bucketNotificationConfig)
})
setBucketNotification(bucketName, bucketNotificationConfig[, callback])
上传用户创建的通知配置并将其关联到指定的存储桶名称。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
BucketNotification |
包含通知配置的 Javascript 对象。 |
|
function |
如果出现错误,回调函数将使用非 |
示例
// Create a new notification object
const bucketNotification = new Minio.NotificationConfig()
// Setup a new Queue configuration
const arn = Minio.buildARN('aws', 'sqs', 'us-west-2', '1', 'webhook')
const queue = new Minio.QueueConfig(arn)
queue.addFilterSuffix('.jpg')
queue.addFilterPrefix('myphotos/')
queue.addEvent(Minio.ObjectReducedRedundancyLostObject)
queue.addEvent(Minio.ObjectCreatedAll)
// Add the queue to the overall notification object
bucketNotification.add(queue)
minioClient.setBucketNotification('mybucket', bucketNotification, function (err) {
if (err) return console.log(err)
console.log('Success')
})
removeAllBucketNotification(bucketName[, callback])
删除与指定存储桶关联的存储桶通知配置。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称 |
|
function |
如果出现错误,回调函数将使用非 |
minioClient.removeAllBucketNotification('my-bucketname', function (e) {
if (e) {
return console.log(e)
}
console.log('True')
})
listenBucketNotification(bucketName, prefix, suffix, events)
监听存储桶上的通知。 此外,还可以为前缀、后缀和事件提供过滤器。 使用此 API 不需要事先设置存储桶通知。 这是一个 MinIO 扩展 API,其中唯一标识符由服务器根据传入请求自动注册和注销。
返回一个EventEmitter
,它将发出一个notification
事件,该事件包含记录。
要停止监听,请在返回的EventEmitter
上调用.stop()
。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称 |
|
字符串 |
对象键前缀,用于过滤通知。 |
|
字符串 |
对象键后缀,用于过滤通知。 |
|
Array |
为特定事件类型启用通知。 |
有关完整示例,请参阅这里。
const listener = minioClient.listenBucketNotification('my-bucketname', 'photos/', '.jpg', ['s3:ObjectCreated:*'])
listener.on('notification', function (record) {
// For example: 's3:ObjectCreated:Put event occurred (2016-08-23T18:26:07.214Z)'
console.log('%s event occurred (%s)', record.eventName, record.eventTime)
listener.stop()
})
async getBucketPolicy(bucketName: string): Promise
获取与指定存储桶关联的存储桶策略。 如果objectPrefix
不为空,则存储桶策略也将根据对象权限进行过滤。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称 |
// Retrieve bucket policy of 'my-bucketname'
const policy = await minioClient.getBucketPolicy('my-bucketname')
console.log(`Bucket policy file: ${policy}`)
async setBucketPolicy(bucketName, bucketPolicy): Promise
在指定的存储桶上设置存储桶策略。 bucketPolicy 在此处有详细说明。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
存储桶的名称。 |
|
字符串 |
存储桶策略。 |
// Set the bucket policy of `my-bucketname`
await minioClient.setBucketPolicy('my-bucketname', JSON.stringify(policy))
6. 自定义设置
setS3TransferAccelerate(endpoint)
为所有后续 API 请求设置 AWS S3 传输加速端点。 注意:此 API 仅适用于 AWS S3,对于 S3 兼容的对象存储服务来说是无操作的。
参数
参数 |
类型 |
描述 |
---|---|---|
|
字符串 |
设置为新的 S3 传输加速端点。 |
7. HTTP 请求选项
setRequestOptions(options)
设置 HTTP/HTTPS 请求选项。 支持的选项为agent
(http.Agent())、family
(解析host
或hostname
时要使用的 IP 地址族) 以及此处记录的与 TLS 相关的选项(‘agent’、‘ca’、‘cert’、‘ciphers’、‘clientCertEngine’、‘crl’、‘dhparam’、‘ecdhCurve’、‘honorCipherOrder’、‘key’、‘passphrase’、‘pfx’、‘rejectUnauthorized’、‘secureOptions’、‘secureProtocol’、‘servername’、‘sessionIdContext’)此处
// Do not reject self signed certificates.
minioClient.setRequestOptions({ rejectUnauthorized: false })