JavaScript 客戶端 API 參考 
初始化 MinIO Client 物件。
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。 |
|
物件 |
建立儲存桶的選項。例如: |
範例
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])
移除儲存桶。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
函數 |
如果儲存桶成功移除,則 |
範例
try {
await minioClient.removeBucket('mybucket')
console.log('Bucket removed successfully.')
} catch (err) {
console.log('unable to remove bucket.')
}
listObjects(bucketName, prefix, recursive [,listOpts])
列出儲存桶中的所有物件。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
應列出的物件前綴(選用,預設為 |
|
布林值 |
|
|
物件 |
列出物件的查詢參數,可以包含 |
傳回值
參數 |
類型 |
描述 |
---|---|---|
|
串流 |
發出儲存桶中物件的串流。 |
物件的格式如下
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
物件的名稱。 |
|
字串 |
物件前綴的名稱。 |
|
數字 |
物件的大小。 |
|
字串 |
物件的 etag。 |
|
字串 |
物件的 versionId。 |
|
布林值 |
如果為刪除標記,則為 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 列出儲存桶中的所有物件
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
應列出的物件前綴(選用,預設為 |
|
布林值 |
|
|
字串 |
指定在列出儲存桶中的物件時,要從哪個物件名稱開始。(選用,預設為 |
傳回值
參數 |
類型 |
描述 |
---|---|---|
|
串流 |
發出儲存桶中物件的串流。 |
物件的格式如下
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
物件的名稱。 |
|
字串 |
物件前綴的名稱。 |
|
數字 |
物件的大小。 |
|
字串 |
物件的 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 列出儲存桶中的所有物件及其 metadata
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
應列出的物件前綴(選用,預設為 |
|
布林值 |
|
|
字串 |
指定在列出儲存桶中的物件時,要從哪個物件名稱開始。(選用,預設為 |
傳回值
參數 |
類型 |
描述 |
---|---|---|
|
串流 |
發出儲存桶中物件的串流。 |
物件的格式如下
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
物件的名稱。 |
|
字串 |
物件前綴的名稱。 |
|
數字 |
物件的大小。 |
|
字串 |
物件的 etag。 |
|
日期 |
修改時間戳記。 |
|
物件 |
物件的 metadata。 |
範例
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)
列出儲存桶中部分上傳的物件。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
部分上傳的物件名稱前綴。(選用,預設為 |
|
布林值 |
|
傳回值
參數 |
類型 |
描述 |
---|---|---|
|
串流 |
發出格式如下的物件 |
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
物件的名稱。 |
|
字串 |
物件的上傳 ID。 |
|
整數 |
部分上傳的物件的大小。 |
範例
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)
設定儲存桶的版本控制狀態
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
物件 |
版本控制設定,例如: |
範例
const versioningConfig = { Status: 'Enabled' }
await minioClient.setBucketVersioning('bucketname', versioningConfig)
setBucketReplication(bucketName, replicationConfig)
設定儲存桶的複寫設定
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
物件 |
複寫設定,以 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)
設定儲存桶的生命週期組態
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
物件 |
有效的生命週期組態或( |
範例
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])
設定儲存桶的物件鎖定組態
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
物件 |
鎖定組態可以是 |
範例 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])
設定儲存桶的加密組態
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
物件 |
加密組態可以省略或為 |
範例 設定儲存桶的加密組態
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)
以串流方式下載物件。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
物件 |
取得物件的選項。預設為 |
傳回值
參數 |
類型 |
描述 |
---|---|---|
|
|
發出物件內容的串流。 |
範例
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])
以串流方式下載物件的指定範圍位元組。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
數字 |
串流將從哪個 |
|
數字 |
將在串流中讀取的物件 |
|
物件 |
取得物件的選項。預設為 |
|
函數 |
如果發生錯誤,則會使用 |
傳回值
參數 |
類型 |
描述 |
---|---|---|
|
串流 |
發出物件內容的串流。 |
範例
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])
下載物件並將其儲存為本機檔案系統中的檔案。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
字串 |
本機檔案系統上將寫入物件資料的路徑。 |
|
物件 |
取得物件的選項。預設為 |
|
函數 |
如果發生錯誤,則會使用 |
傳回值
值 |
類型 |
描述 |
---|---|---|
|
物件 |
發生任何失敗時的錯誤 |
|
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])
從串流/Buffer 上傳物件。
從串流
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
串流 |
可讀取的串流。 |
|
數字 |
物件的大小(選用)。 |
|
Javascript 物件 |
物件的 metaData(選用)。 |
|
函數 |
非 null 的 |
傳回值
值 |
類型 |
描述 |
---|---|---|
|
物件 |
發生任何失敗時的錯誤 |
|
字串 |
物件的 |
|
字串 |
物件的 |
範例
單一物件的最大大小限制為 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」或「字串」
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
串流 或 Buffer |
可讀取的串流。 |
|
Javascript 物件 |
物件的 metaData(選用)。 |
|
函數 |
非 null 的 |
範例
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 物件 |
物件的中繼資料。 |
|
傳回值
值 |
類型 |
描述 |
---|---|---|
|
物件 |
發生任何失敗時的錯誤 |
|
字串 |
物件的 |
|
字串 |
物件的 |
範例
單一物件的最大大小限制為 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])
取得物件的中繼資料。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
物件 |
物件的版本,格式為 |
|
函數 |
如果發生錯誤, |
傳回值
參數 |
類型 |
描述 |
---|---|---|
|
數字 |
物件的大小。 |
|
字串 |
物件的 etag。 |
|
字串 |
物件的版本。 |
|
Javascript 物件 |
物件的 metadata。 |
|
日期 |
上次修改時間戳記。 |
範例
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])
移除物件。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
物件 |
物件的版本,格式為 |
範例 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 中的所有物件。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
物件 |
要移除的儲存桶中物件的清單。可以是以下任一格式: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])
對物件套用保留。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
物件 |
保留的選項,例如: |
範例 對物件套用物件保留
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])
取得物件的保留設定
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
物件 |
保留的選項,例如: |
範例 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])
移除物件上的標籤
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
物件 |
預設值為 {}。例如 |
範例
await minioClient.removeObjectTagging('bucketname', 'object-name')
範例 1 移除物件版本上的標籤。
await minioClient.removeObjectTagging('bucketname', 'object-name', { versionId: 'my-object-version-id' })
getObjectTagging(bucketName, objectName[, getOpts])
取得物件的標籤
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
物件 |
預設值為 {}。例如 |
範例
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)
取得物件上的法律保留。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
物件 |
法律保留設定選項。例如 |
範例 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])
設定物件上的法律保留。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
物件 |
要設定的法律保留設定選項。例如 |
範例 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)
從部分組成物件
參數
參數 |
類型 |
描述 |
---|---|---|
|
物件 |
類型為 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)。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
字串 |
物件的名稱。 |
|
物件 |
範例 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 天。(選用) |
|
物件 |
要求參數。(選用)例如 {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 天。(選用) |
|
物件 |
要覆寫的回應標頭(選用) |
|
日期 |
日期物件,將在此日期發出 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 設定原則條件。可以設定諸如接收物件上傳的儲存桶名稱、金鑰名稱前置詞、到期原則等原則。
參數
參數 |
類型 |
描述 |
---|---|---|
|
物件 |
由 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 提供者中且屬於指定儲存桶名稱的通知設定。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
函數 |
回呼函式會在發生錯誤時使用非 |
範例
minioClient.getBucketNotification('mybucket', function (err, bucketNotificationConfig) {
if (err) return console.log(err)
console.log(bucketNotificationConfig)
})
setBucketNotification(bucketName, bucketNotificationConfig[, callback])
上傳使用者建立的通知設定,並將其與指定的儲存桶名稱建立關聯。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱。 |
|
BucketNotification |
包含通知設定的 Javascript 物件。 |
|
函數 |
回呼函式會在發生錯誤時使用非 |
範例
// 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])
移除與指定儲存桶相關聯的儲存桶通知設定。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱 |
|
函數 |
回呼函式會在發生錯誤時使用非 |
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()
。
參數
參數 |
類型 |
描述 |
---|---|---|
|
字串 |
儲存桶的名稱 |
|
字串 |
用於篩選通知的物件鍵前綴。 |
|
字串 |
用於篩選通知的物件鍵後綴。 |
|
陣列 |
針對特定事件類型啟用通知。 |
請參閱此處以取得完整範例。
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 })