FPT Object Storage là một sản phẩm được phát triển dựa trên tiêu chuẩn AWS S3. Vì vậy bạn có thể sử dụng tất cả các công cụ và thư viện đã được phát triển cho AWS S3 để tương tác với FPT Object Storage. Dưới đây là hướng dẫn cài đặt và config kết nối mẫu của một số ngôn ngữ thông dụng.
Với Python, bạn có thể sử dụng thư viện boto3. Đây là thư viện chính thức của Amazon cho Python.
Cài đặt
pip install boto3
Khởi tạo kết nối
import boto3
# Set up connection information
s3_endpoint = "ENDPOINT"
s3_access_key_id = "ACCESS_KEY_ID"
s3_secret_access_key = "SECRET_KEY_ID"
s3 = boto3.resource(
"s3",
endpoint_url=s3_endpoint,
aws_access_key_id=s3_access_key_id,
aws_secret_access_key=s3_secret_access_key,
)
s3client = boto3.client(
"s3",
endpoint_url=s3_endpoint,
aws_access_key_id=s3_access_key_id,
aws_secret_access_key=s3_secret_access_key,
)
Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.
Một số ví dụ cơ bản
# Create a new bucket
s3client.create_bucket(Bucket=bucket_name)
-------------------------------------------
# Delete the bucket
s3client.delete_bucket(Bucket=bucket_name)
-------------------------------------------
# Create a new object
s3client.put_object(Bucket=bucket_name, Key=object_key, Body=content)
-------------------------------------------
# Read the content of the object
response = s3client.get_object(Bucket=bucket_name, Key=object_key)
object_content = response['Body'].read().decode('utf-8')
print(object_content)
-------------------------------------------
# Delete the object
s3client.delete_object(Bucket=bucket_name, Key=object_key)
Tài liệu đầy đủ
Refer: https://boto3.amazonaws.com/v1/documentation/api/latest/index.html
Để sử dụng FPT Object Storage trong Java, bạn có thể sử dụng các thư viện hỗ trợ như AWS SDK for Java, MinIO hoặc s3proxy.
Dưới đây là một hướng dẫn sử dụng AWS SDK for Java, một trong những thư viện phổ biến nhất để kết nối và thao tác với FPT Object Storage:
Cài đặt
//Tạo 1 project maven
//Thêm vào file pom.xml dependency sau :
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
<version>2.17.42</version> <!-- Đảm bảo sử dụng phiên bản mới nhất -->
</dependency>
Khởi tạo kết nối
// Thay đổi các giá trị này theo thông tin tài khoản S3-compatible của bạn
String accessKey = "ACCESS_KEY_ID";
String secretKey = "SECRET_KEY_ID";
String endpoint = "ENDPOINT";
String bucketName = "YOUR_BUCKET_NAME";
// Tạo client S3
S3Client s3Client = S3Client.builder()
.endpointOverride(URI.create(endpoint))
.credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey)))
.build();
Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.
Một số ví dụ cơ bản
import java.net.URI;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.ListObjectsRequest;
import software.amazon.awssdk.services.s3.model.ListObjectsResponse;
import software.amazon.awssdk.services.s3.model.S3Object;
public class S3Example {
public static void main(String[] args) {
// Thay đổi các giá trị này theo thông tin tài khoản S3-compatible của bạn
String accessKey = "ACCESS_KEY_ID";
String secretKey = "SECRET_KEY_ID";
String endpoint = "ENDPOINT";
String bucketName = "<YOUR_BUCKET_NAME>";
// Tạo client S3
S3Client s3Client = S3Client.builder()
.endpointOverride(URI.create(endpoint))
.credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey)))
.build();
// Thực hiện các thao tác S3 tại đây, ví dụ: list objects
ListObjectsRequest listObjectsRequest = ListObjectsRequest.builder()
.bucket(bucketName)
.build();
ListObjectsResponse listObjectsResponse = s3Client.listObjects(listObjectsRequest);
for (S3Object content: listObjectsResponse.contents()) {
System.out.println("Object Key: " + content.key());
}
// Đóng client khi đã sử dụng xong
s3Client.close();
}
}
Tài liệu đầy đủ
Refer: https://docs.aws.amazon.com/sdk-for-java/
FPT Object Storage được thiết kế tương thích với Amazon S3, vì vậy bạn có thể sử dụng S3 SDK for C# được cung cấp bới AWS để tương tác với FPT Object Storage. Dưới đây là một số hướng dẫn cơ bản:
Cài đặt
// Cài đặt bằng NuGet Package Manager
Install-Package AWSSDK -Version 2.3.55.2
Khởi tạo kết nối
string accessKey = "ACCESS_KEY_ID";
string secretKey = "SECRET_KEY_ID";
AmazonS3Config config = new AmazonS3Config();
config.ServiceURL = "<ENDPOINT>";
config.ForcePathStyle = true;
AmazonS3Client client = new AmazonS3Client(
accessKey,
secretKey,
config
);
Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.
Một số ví dụ cơ bản
// Cài đặt bằng NuGet Package Manager
// Install-Package AWSSDK -Version 3.7.0
using Amazon.S3;
using Amazon.S3.Model;
class Program {
static void Main() {
// Khởi tạo kết nối
string accessKey = "ACCESS_KEY_ID";
string secretKey = "SECRET_KEY_ID";
AmazonS3Config config = new AmazonS3Config {
ServiceURL = "ENDPOINT",
ForcePathStyle = true
};
using(AmazonS3Client client = new AmazonS3Client(accessKey, secretKey, config)) {
// Một số ví dụ cơ bản
// Tạo một bucket mới
string bucketName = "my-unique-bucket-name";
client.PutBucket(new PutBucketRequest {
BucketName = bucketName
});
// Xóa bucket
client.DeleteBucket(new DeleteBucketRequest {
BucketName = bucketName
});
// Tạo một object mới
string objectKey = "my-object-key";
string content = "Hello, world!";
client.PutObject(new PutObjectRequest {
BucketName = bucketName,
Key = objectKey,
ContentBody = content
});
// Đọc nội dung của object
GetObjectResponse response = client.GetObject(new GetObjectRequest {
BucketName = bucketName,
Key = objectKey
});
using(var reader = new System.IO.StreamReader(response.ResponseStream)) {
string objectContent = reader.ReadToEnd();
Console.WriteLine(objectContent);
}
// Xóa object
client.DeleteObject(new DeleteObjectRequest {
BucketName = bucketName,
Key = objectKey
});
}
}
}
Tài liệu đầy đủ
Refer: https://aws.amazon.com/sdk-for-net/
Cài đặt
// Có nhiều cách để cài đặt PHP SDK
// 1. Sử dụng Composer
php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
// require composer autoload
<?php
require '/path/to/vendor/autoload.php';
?>
// 2. Sử dụng Packaged Phar
// Download tại http://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.phar và require vào script
<?php
require '/path/to/aws.phar';
?>
// 3. Sử dụng gói zip
// Download tại http://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip và require vào script
<?php
require '/path/to/aws-autoloader.php';
?>
Khởi tạo kết nối
<?php
$accessKey = "ACCESS_KEY_ID";
$secretKey = "SECRET_KEY_ID";
$credentials = new Aws\Credentials\Credentials($accessKey, $secretKey);
$options = [
"version" => "latest",
"region" => "<REGION>",
"signature_version" => "v4",
"credentials" => $credentials,
"endpoint" => "<ENDPOINT>",
];
$s3Client = new Aws\S3\S3Client($options);
Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.
Một số ví dụ cơ bản
// Cài đặt bằng Composer
// php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
// Require composer autoload*
<?php require "/path/to/vendor/autoload.php"; ?>
<?php // Khởi tạo kết nối
$accessKey = "ACCESS_KEY_ID";
$secretKey = "SECRET_KEY_ID";
$credentials = new Aws\Credentials\Credentials($accessKey, $secretKey);
$options = [
"version" => "latest",
"region" => "<REGION>",
"signature_version" => "v4",
"credentials" => $credentials,
"endpoint" => '"ENDPOINT"',
];
$s3Client = new Aws\S3\S3Client($options); // Một số ví dụ cơ bản // Tạo một bucket mới
$bucketName = "my-unique-bucket-name";
$s3Client->createBucket(["Bucket" => $bucketName]); // Xóa bucket
$s3Client->deleteBucket(["Bucket" => $bucketName]); // Tạo một object mới
$objectKey = "my-object-key";
$content = "Hello, world!";
$s3Client->putObject([
"Bucket" => $bucketName,
"Key" => $objectKey,
"Body" => $content,
]);
// Đọc nội dung của object
$result = $s3Client->getObject(["Bucket" => $bucketName, "Key" => $objectKey]);
$objectContent = $result["Body"]->getContents();
echo $objectContent; // Xóa object
$s3Client->deleteObject(["Bucket" => $bucketName, "Key" => $objectKey]);
?>
Tài liệu đầy đủ
Refer: https://docs.aws.amazon.com/sdk-for-php/
Cài đặt
// Để cài đặt Javascript SDK
// 1. Tải bản sdk cho releases tại địa chỉ: https://github.com/aws/aws-sdk-js/releases
// 2. Giải nén thư mục dist/ của bản sdk
// 3. Sử dụng file sdk cho trình duyệt băng cách nhúng vào file html sử dụng
// 4. Cấu hình CORS cho bucket theo hướng dẫn : https://fptcloud.com/documents/object-storage/?doc=tutorials-bucket-config
Khởi tạo kết nối
accessKey = "ACCESS_KEY_ID";
secretKey = "SECRET_KEY_ID";
AWS.config.update({
accessKeyId: accessKey,
secretAccessKey: secretKey,
region: '<REGION>',
endpoint: '<ENDPOINT>',
apiVersions: {
s3: '2006-03-01'
}
})
const s3 = new AWS.S3()
Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.
Một số ví dụ cơ bản
<!-- Cài đặt Javascript SDK -->
<!-- 1. Tải bản sdk cho releases tại địa chỉ: https://github.com/aws/aws-sdk-js/releases -->
<!-- 2. Giải nén thư mục dist/ của bản sdk -->
<!-- 3. Sử dụng file sdk cho trình duyệt bằng cách nhúng vào file HTML sử dụng -->
<
script >
// Khởi tạo kết nối
var accessKey = "<ACCESS_KEY_ID>";
var secretKey = "<SECRET_KEY_ID>";
AWS.config.update({
accessKeyId: accessKey,
secretAccessKey: secretKey,
region: '<REGION>',
endpoint: '<ENDPOINT>',
apiVersions: {
s3: '2006-03-01'
}
});
var s3 = new AWS.S3();
// Một số ví dụ cơ bản
// Tạo một bucket mới
var bucketName = "my-unique-bucket-name";
s3.createBucket({
Bucket: bucketName
}, function(err, data) {
if (err) console.log(err, err.stack);
else console.log("Bucket created:", data);
});
// Xóa bucket
s3.deleteBucket({
Bucket: bucketName
}, function(err, data) {
if (err) console.log(err, err.stack);
else console.log("Bucket deleted:", data);
});
// Tạo một object mới
var objectKey = "my-object-key";
var content = "Hello, world!";
s3.putObject({
Bucket: bucketName,
Key: objectKey,
Body: content
}, function(err, data) {
if (err) console.log(err, err.stack);
else console.log("Object created:", data);
});
// Đọc nội dung của object
s3.getObject({
Bucket: bucketName,
Key: objectKey
}, function(err, data) {
if (err) console.log(err, err.stack);
else console.log("Object content:", data.Body.toString('utf-8'));
});
// Xóa object
s3.deleteObject({
Bucket: bucketName,
Key: objectKey
}, function(err, data) {
if (err) console.log(err, err.stack);
else console.log("Object deleted:", data);
}); <
/script>
Tài liệu đầy đủ
Refer: https://docs.aws.amazon.com/sdk-for-javascript/
Cài đặt
npm install [email protected]
Khởi tạo kết nối
const AWS = require('aws-sdk')
AWS.config.update({
accessKeyId: `"ACCESS_KEY_ID" `,
secretAccessKey: `"SECRET_KEY_ID"`,
region: '<REGION>',
endpoint: '"ENDPOINT"',
apiVersions: {
s3: '2006-03-01'
},
logger: process.stdout
})
Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.
Một số ví dụ cơ bản
// Cài đặt
// npm install [email protected]
const AWS = require('aws-sdk');
// Khởi tạo kết nối
AWS.config.update({
accessKeyId: '"ACCESS_KEY_ID"',
secretAccessKey: '"SECRET_KEY_ID"',
region: '<REGION>',
endpoint: '"ENDPOINT"',
apiVersions: {
s3: '2006-03-01',
},
logger: process.stdout,
});
const s3 = new AWS.S3();
// Một số ví dụ cơ bản
// Tạo một bucket mới
const bucketName = 'my-unique-bucket-name';
s3.createBucket({ Bucket: bucketName }, (err, data) => {
if (err) console.error(err, err.stack);
else console.log('Bucket created:', data);
});
// Xóa bucket
s3.deleteBucket({ Bucket: bucketName }, (err, data) => {
if (err) console.error(err, err.stack);
else console.log('Bucket deleted:', data);
});
// Tạo một object mới
const objectKey = 'my-object-key';
const content = 'Hello, world!';
s3.putObject({ Bucket: bucketName, Key: objectKey, Body: content }, (err, data) => {
if (err) console.error(err, err.stack);
else console.log('Object created:', data);
});
// Đọc nội dung của object
s3.getObject({ Bucket: bucketName, Key: objectKey }, (err, data) => {
if (err) console.error(err, err.stack);
else console.log('Object content:', data.Body.toString('utf-8'));
});
// Xóa object
s3.deleteObject({ Bucket: bucketName, Key: objectKey }, (err, data) => {
if (err) console.error(err, err.stack);
else console.log('Object deleted:', data);
});
Tài liệu đầy đủ
Refer: https://github.com/aws/aws-sdk-js/
Cài đặt
go get "github.com/aws/aws-sdk-go/aws"
Khởi tạo kết nối
s3Config := &aws.Config{
Credentials: credentials.NewStaticCredentials("ACCESS_KEY_ID", "SECRET_KEY_ID", ""),
Endpoint: aws.String("ENDPOINT"),
Region: aws.String("REGION"),
}
newSession := session.New(s3Config)
Client = s3.New(newSession)
Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.
Một số ví dụ cơ bản
package main
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"
"log"
)
var Client *s3.S3
func main() {
// Khởi tạo kết nối
s3Config := &aws.Config{
Credentials: credentials.NewStaticCredentials("ACCESS_KEY_ID", "SECRET_KEY_ID", ""),
Endpoint: aws.String("ENDPOINT"),
Region: aws.String("REGION"),
}
newSession := session.New(s3Config)
Client = s3.New(newSession)
// Một số ví dụ cơ bản
// Tạo một bucket mới
bucketName := "my-unique-bucket-name"
_, err := Client.CreateBucket(&s3.CreateBucketInput{
Bucket: aws.String(bucketName),
})
if err != nil {
log.Fatal(err)
}
log.Println("Bucket created:", bucketName)
// Xóa bucket
_, err = Client.DeleteBucket(&s3.DeleteBucketInput{
Bucket: aws.String(bucketName),
})
if err != nil {
log.Fatal(err)
}
log.Println("Bucket deleted:", bucketName)
// Tạo một object mới
objectKey := "my-object-key"
content := "Hello, world!"
_, err = Client.PutObject(&s3.PutObjectInput{
Bucket: aws.String(bucketName),
Key: aws.String(objectKey),
Body: aws.String(content),
})
if err != nil {
log.Fatal(err)
}
log.Println("Object created:", objectKey)
// Đọc nội dung của object
result, err := Client.GetObject(&s3.GetObjectInput{
Bucket: aws.String(bucketName),
Key: aws.String(objectKey),
})
if err != nil {
log.Fatal(err)
}
log.Println("Object content:", result.Body)
// Xóa object
_, err = Client.DeleteObject(&s3.DeleteObjectInput{
Bucket: aws.String(bucketName),
Key: aws.String(objectKey),
})
if err != nil {
log.Fatal(err)
}
log.Println("Object deleted:", objectKey)
}
Tài liệu đầy đủ