Tích hợp KDATA Storage vào hệ thống sử dụng SDK
Client sử dụng NodeJS
Cài đặt AWS SDK package cho NodeJS
npm install --save aws-sdk
Ví dụ sau đây hướng dẫn cách kết nối đến MinIO sử dụng AWS SDK package cho ngôn ngữ Node.js:
const process = require('process');
const AWS = require('aws-sdk');
const s3 = new AWS.S3({
EVG_ACCESS_KEY_ID=xxxx
EVG_SECRET_ACCESS_KEY=yyyy
EVG_DEFAULT_REGION=us-east-1
EVG_BUCKET=bucket_name
EVG_ENDPOINT=https://oss.nextidc.net
s3ForcePathStyle: true,
signatureVersion: 'v4'
});
// putObject operation.
s3.putObject(
{ Bucket: 'testbucket', Key: 'testobject', Body: 'Hello from MinIO!!' },
(err, data) => {
if (err)
console.log(err)
else
console.log('Successfully uploaded data to testbucket/testobject');
}
);
// getObject operation.
const file = require('fs').createWriteStream('/tmp/mykey');
s3.getObject({ Bucket: 'testbucket', Key: 'testobject' })
.on('httpData', chunk => file.write(chunk))
.on('httpDone', () => file.end())
.send();
Client sử dụng PHP
<?php
// Include the SDK using the Composer autoloader
date_default_timezone_set('America/Los_Angeles');
require 'vendor/autoload.php';
$s3 = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'endpoint' => 'https://oss.nextidc.net',
‘use_path_style_endpoint’ => true,
]);
$result = $s3->listBuckets();
echo "ListBuckets: \n";
foreach ($result['Buckets'] as $bucket) {
echo $bucket['Name'] . " " . $bucket['CreationDate'] . "\n";
}
echo "ListObjects: \n";
$results = $s3->getPaginator('ListObjects', [
'Bucket' => 'testbucket'
]);
foreach ($results as $result) {
foreach ($result['Contents'] as $object) {
echo $object['Key'] . " " . $object['Size'] . "\n";
}
}
echo "ListObjects: delimited\n";
$results = $s3->getPaginator('ListObjects', [
'Bucket' => 'testbucket',
'Delimiter' => '/'
]);
$expression = '[CommonPrefixes[].Prefix, Contents[].Key][]';
foreach ($results->search($expression) as $item) {
echo $item . "\n";
}
Client sử dụng AWS SDK for Dot NET
1. Yêu cầu
Đã tạo bucket trên hệ thống KDATA Storage và có đầy đủ thông tin
- ServiceURL :
- Bucket name:
- Access Key:
- Secret Key:
2. Cài đặt
Cài đặt aws-sdk-dotnet có sẵn dưới dạng gói Nuget. Gói này chỉ chứa các thư viện cần thiết để làm việc với AWS S3.
Cài đặt gói Nuget được thực hiện bằng giao diện người dùng “Manage Nuget Packages…UI” hoặc bằng cách sử dụng Bảng điều khiển quản lý Nuget bằng cách nhập Install-Package AWSSDK.S3.Quá trình cài đặt sẽ tự động tải xuống thư viện cho nền tảng .NET tương thích với dự án của bạn. Gói này tồn tại cho .NET Frameworks 3.5 và 4.5 và cả .NET Core 1.1.
Gói (phiên bản 2) cũ hơn cũng có sẵn, nhưng nó không được khuyến khích sử dụng vì nó tải xuống tất cả các thư viện AWS SDK chứ không chỉ mô-đun S3.
3. Tích hợp
Tạo một dự án bảng điều khiển trong Visual Studio IDE và thay thế Program.cs đã tạo bằng mã bên dưới. Cập nhật ServiceURL, accessKey và secretKey với thông tin đã tạo trên hệ thống KDATA Storage.
using Amazon.S3;
using System;
using System.Threading.Tasks;
using Amazon;
class Program
{
private const string accessKey = "PLACE YOUR ACCESS KEY HERE";
private const string secretKey = "PLACE YOUR SECRET KEY HERE"; // do not store secret key hardcoded in your production source code!
static void Main(string[] args)
{
Task.Run(MainAsync).GetAwaiter().GetResult();
}
private static async Task MainAsync()
{
var config = new AmazonS3Config
{
AuthenticationRegion = RegionEndpoint.USEast1.SystemName, // Should match the environment variable.
ServiceURL = "https://oss.nextidc.net", // replace https://oss.nextidc.net with URL of your bucket and zone on EVG OSS
ForcePathStyle = true // MUST be true to work correctly with EVG OSS
};
var amazonS3Client = new AmazonS3Client(accessKey, secretKey, config);
// uncomment the following line if you like to troubleshoot communication with S3 storage and implement private void OnAmazonS3Exception(object sender, Amazon.Runtime.ExceptionEventArgs e)
// amazonS3Client.ExceptionEvent += OnAmazonS3Exception;
var listBucketResponse = await amazonS3Client.ListBucketsAsync();
foreach (var bucket in listBucketResponse.Buckets)
{
Console.Out.WriteLine("bucket '" + bucket.BucketName + "' created at " + bucket.CreationDate);
}
if (listBucketResponse.Buckets.Count > 0)
{
var bucketName = listBucketResponse.Buckets[0].BucketName;
var listObjectsResponse = await amazonS3Client.ListObjectsAsync(bucketName);
foreach (var obj in listObjectsResponse.S3Objects)
{
Console.Out.WriteLine("key = '" + obj.Key + "' | size = " + obj.Size + " | tags = '" + obj.ETag + "' | modified = " + obj.LastModified);
}
}
}
}