Chuyển tới nội dung chính

SDKs

Sử dụng các SDK phổ biến để tích hợp với Vietnix Cloud S3​

Vietnix Cloud S3 Storage tương thích hoàn toàn với S3 API, cho phép sử dụng nhiều SDK chính thức của AWS và thư viện cộng đồng ở nhiều ngôn ngữ lập trình. Bên dưới là ví dụ cách kết nối và thực hiện thao tác cơ bản với một số SDK phổ biến.

1. Python (Boto3)​

import boto3
from botocore.config import Config

s3 = boto3.client(
's3',
endpoint_url='https://s3.vn-hcm-1.vietnix.cloud',
aws_access_key_id='YOUR_ACCESS_KEY',
aws_secret_access_key='YOUR_SECRET_KEY',
region_name='vn-hcm-1',
config=Config(s3={'addressing_style': 'path'}, signature_version='s3')
)

# Liệt kê bucket
response = s3.list_buckets()
print(response['Buckets'])

# Tải lên tệp
s3.upload_file('local-file.txt', 'your-bucket-name', 'remote-file.txt')

2. Node.js (AWS SDK v3)​

const { S3Client, ListBucketsCommand, PutObjectCommand } = require('@aws-sdk/client-s3');

const s3 = new S3Client({
endpoint: 'https://s3.vn-hcm-1.vietnix.cloud',
region: 'vn-hcm-1',
credentials: {
accessKeyId: 'YOUR_ACCESS_KEY',
secretAccessKey: 'YOUR_SECRET_KEY'
},
forcePathStyle: true
});

// Liệt kê bucket
s3.send(new ListBucketsCommand({})).then(data => console.log(data.Buckets));

// Tải lên tệp
const fs = require('fs');
const fileStream = fs.createReadStream('local-file.txt');
s3.send(new PutObjectCommand({
Bucket: 'your-bucket-name',
Key: 'remote-file.txt',
Body: fileStream
}));

3. Go (AWS SDK v2)​

import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)

sess := session.Must(session.NewSession(&aws.Config{
Region: aws.String("vn-hcm-1"),
Endpoint: aws.String("https://s3.vn-hcm-1.vietnix.cloud"),
S3ForcePathStyle: aws.Bool(true),
Credentials: credentials.NewStaticCredentials("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY", ""),
}))

svc := s3.New(sess)

// Liệt kê bucket
result, _ := svc.ListBuckets(nil)
for _, b := range result.Buckets {
fmt.Println(*b.Name)
}

// Tải lên tệp
file, _ := os.Open("local-file.txt")
defer file.Close()
svc.PutObject(&s3.PutObjectInput{
Bucket: aws.String("your-bucket-name"),
Key: aws.String("remote-file.txt"),
Body: file,
})

4. Java (AWS SDK v2)​

S3Client s3 = S3Client.builder()
.endpointOverride(URI.create("https://s3.vn-hcm-1.vietnix.cloud"))
.region(Region.of("vn-hcm-1"))
.credentialsProvider(StaticCredentialsProvider.create(
AwsBasicCredentials.create("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")))
.forcePathStyle(true)
.build();

// Liệt kê bucket
ListBucketsResponse buckets = s3.listBuckets();
buckets.buckets().forEach(b -> System.out.println(b.name()));

// Tải lên tệp
s3.putObject(PutObjectRequest.builder()
.bucket("your-bucket-name")
.key("remote-file.txt")
.build(),
RequestBody.fromFile(Paths.get("local-file.txt")));

5. PHP (AWS SDK for PHP)​

  • Cài đặt AWS SDK for PHP qua Composer
composer require aws/aws-sdk-php
  • Ví dụ code PHP
require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;

// Thông tin xác thực Vietnix Cloud S3 (lấy từ panel Vietnix)
$accessKey = 'YOUR_ACCESS_KEY'; // ví dụ: AKIAxxxxxxxxxxxxxxxx
$secretKey = 'YOUR_SECRET_KEY'; // ví dụ: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

// Cấu hình Vietnix S3
$s3Client = new S3Client([
'version' => 'latest', // hoặc '2006-03-01'
'region' => 'auto', // Có thể là bất kỳ, Vietnix sẽ bỏ qua
'endpoint' => 'https://s3.vn-hcm-1.vietnix.cloud',
'credentials' => [
'key' => $accessKey,
'secret' => $secretKey,
],
// Tùy chọn quan trọng cho các endpoint không phải AWS
'use_path_style_endpoint' => true, // Rất quan trọng đối với Vietnix
'bucket_endpoint' => false,
]);

// Kiểm tra: Liệt kê tất cả bucket
try {
$result = $s3Client->listBuckets();
echo "Các bucket:\n";
foreach ($result['Buckets'] as $bucket) {
echo "- " . $bucket['Name'] . " (tạo lúc: " . $bucket['CreationDate'] . ")\n";
}
} catch (AwsException $e) {
echo "Lỗi: " . $e->getMessage();
}

// Ví dụ: Tải lên tệp
$bucketName = 'your-bucket-name'; // Phải đã tồn tại trong panel Vietnix
$key = 'test-folder/hello-world.txt';
$filePath = __DIR__ . '/hello.txt';

try {
$result = $s3Client->putObject([
'Bucket' => $bucketName,
'Key' => $key,
'Body' => fopen($filePath, 'r'),
'ACL' => 'public-read', // tùy chọn
]);

echo "Tải lên tệp thành công!\n";
echo "URL: " . $result->get('ObjectURL') . "\n";
} catch (AwsException $e) {
echo "Tải lên thất bại: " . $e->getMessage();
}

6. C# (.NET AWS SDK)​

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;

namespace S3Demo
{
class Program
{
static async Task Main(string[] args)
{
var s3Config = new AmazonS3Config
{
ServiceURL = "https://s3.vn-hcm-1.vietnix.cloud",
ForcePathStyle = true
};
using var s3Client = new AmazonS3Client("ACCESS-KEY", "SECRET-KEY", s3Config);
try
{
using var fileStream = new FileStream("./hello.txt", FileMode.Open, FileAccess.Read);
var putRequest = new PutObjectRequest
{
BucketName = "BUCKET-NAME",
Key = "test-folder/hello-world.txt",
InputStream = fileStream,
AutoCloseStream = true,
UseChunkEncoding = false
};
await s3Client.PutObjectAsync(putRequest);
Console.WriteLine("File uploaded successfully.");
}
catch (Exception e)
{
Console.WriteLine($"error: {e.Message}");
}
}
}
}

thông tin
  • Thay YOUR_ACCESS_KEY, YOUR_SECRET_KEY, và your-bucket-name bằng thông tin và tên bucket thực tế.
  • Luôn bảo mật thông tin xác thực và thay đổi định kỳ.
  • Với cách dùng nâng cao, tham khảo tài liệu chính thức của từng SDK.