Sử dụng công cụ SDK (Software Define Kit) và Tools với CMC S3

Cập nhật lần cuối: 2024/07/17 15:43:32

CMC S3 có thể tương tác được với hầu hết các SDK và tất cả các AWS S3 API mà bạn muốn.

  • API = Application Programming Interface  
  • SDK = Software Development Kit

Một SDK dường như là tập hợp hoàn chỉnh của các API cho phép thực hiện hầu hết các hành động để khởi tạo ứng dụng. Thêm vào đó SDK bao gồm các công cụ để phát triển nền tảng/ứng dụng. Một API nói cách khác là một loạt các phương pháp liên quan có thể tốt cho một mục đích cụ thể.

Ví dụ, SDK chứa API cũng như các trình biên dịch, runtimes và các thứ liên quan khác. API chỉ đơn giản là các đặc tả để thực thi một nhiệm vụ cố định với ngôn ngữ lập trình nào đó.


Đối với AWS S3 API, tài liệu này sẽ không mô tả lại những S3 API đó mà trong phần này sẽ hướng dẫn bạn cài đặt và cấu hình SDK trong đó có thể thực thi các S3 API để bạn đạt được mục đích của mình là tương tác thành công với với Object Storage của CMC.

Ví dụ đối với ngôn ngữ: Python & thư viện AWS SDK

Sử dụng SDK của AWS cho Python sẽ hỗ trợ gọi đến để thực thi các API của hệ thống CMC S3, gọi là boto3 đóng vai trò như một S3 client kết nối đến Object Storage (CMC S3).

1. Chuẩn bị trước khi bắt đầu:

  •  Yêu cầu có Python phiên bản 3.6 trở lên cài đặt trên máy mà bạn muốn sử dụng SDK này. Sử dụng Linux tham khảo link này để biết cách cài đặt 
  •  Hướng dẫn này giả định bạn quen với ngôn ngữ python và hiểu cơ bản về việc lập trình với ngôn ngữ python - Và giả định bạn hiểu về cách sử dụng cơ bản của Object Storage (CMC S3)

2. Cài đặt boto3

Cài đặt SDK dành cho boto3 thông qua pip, thư viện quản lý của python được cài đặt mặc định trên phiên bản của python:

pip3 install boto3

3. Khởi tạo Client 

Lấy các thông tin Access Key, Secret Key … , thêm các thông tin đó vào đoạn mã sau:

import boto3
      cmc_obj_config = {
            "aws_access_key_id": "điền thông tin access key", "aws_secret_access_key": "điền thông tin secret key","endpoint_url":"điền endpoint Hn hoặc HCM",
     }
client = boto3.client("s3", **cmc_obj_config)

4. Lấy về thông tin Policy của một Bucket

Lấy thông tin Bucket policy bằng việc gọi hàm “get_bucket_policy”. Hàm này sẽ hỗ trợ lấy theo tên của bucket.

s3 = boto3.client('s3') 

result = s3.get_bucket_policy(Bucket='BUCKET_NAME') print(result['Policy'])

5. Áp dụng một Policy cho Bucket

Một bucket policy có thể được tạo hoặc thiết lập bằng việc gọi hàm “put_bucket_policy”. Policy được định nghĩa dưới dạng JSON. Policy được định nghĩa theo mẫu dưới cho phép bất kỳ một người dùng nào có thể truy cập object được lưu trong bucket với tên “bucket_name”.

#create a bucket policy

bucket_name = 'BUCKET_NAME'

bucket_policy = {

    'Version': '2012-10-17',

    'Statement': [{ 

          'Sid': 'AddPerm',

          'Effect': 'Allow',

          'Principal': '*',

          'Action': ['s3:GetObject'],

          'Resource': f'arn:aws:s3:::{bucket_name}/*' 

     }]

}

#convert the policy from json to string

bucket_policy = json.dumps(bucket_policy

#set the new policy

s3 = boto3.client('s3') s3.put_bucket_policy(Bucket=bucket_name,Policy=bucket_policy)

6. Xóa 1 policy trên bucket

Việc xóa một bucket policy được thực hiện thông qua việc gọi hàm “delete_bucket_policy".

s3 = boto3.client('s3') s3.delete_bucket_policy(Bucket='BUCKET_NAME')

7. Liệt kê buckets

Liệt kê các bucket, tham khảo list_bucket() để biết chi tiết, cú pháp và ví dụ:

response = client.list_buckets()

for bucket in response['Buckets']: 

         print(bucket['Name'])

8. Tạo bucket

Tạo một bucket mới, nơi bạn lưu trữ các object. 

client.create_bucket(Bucket='example-bucket')

9. Xóa bucket

Xóa một bucket rỗng. Nếu bucket vẫn còn chứa các object, chúng phải được xóa đi hết trước khi xóa bucket. Tham khảo delete_bucket() để biết thêm chi tiết.

client.delete_bucket(Bucket='example-bucket')

10. Liệt kê Object

Liệt kê tất cả các object bên trong môt một bucket. Tham khảo list_object() để biết thêm chi tiết

Liệt kê tất cả object bên trong bucket: example-bucket

response = client.list_objects(Bucket='example-bucket')

for object in response['Contents']:

       print(object['Key'])

11. Upload 1 Object

Upload một object lên một bucket nhất định. Tham khảo upload_file() để biết thêm chi tiết Upload file “file.txt” được đặt ở cùng thư mục (hoặc đường dẫn đến thư mục) với script sau đây, tên của bucket: example-bucket, tên file: file.txt, key: tên của object bạn muốn đặt tên, bao gồm cả đường dẫn bất kỳ

client.upload_file(Filename='file.txt', Bucket='example-bucket', Key='file.txt')

12. Download một object

Download file “file.txt” được lưu ở bucket: example-bucket xuống thành file “file.txt” ở cùng thư mục với đoạn mã dưới đây.

client.download_file(Bucket='example-bucket', Key='file.txt', Filename='file.txt')

13. Xóa một object hoặc một thư mục

Xóa một object khỏi một bucket. Tham khảo delete_object() để biết thêm chi tiết Xóa một object với tên “file.txt” khỏi bucket: example-bucket

client.delete_object(Bucket='example-bucket', Key='file.txt')

    back to top

    logo

    © 2023, CMC Cloud. All rights reserved.

    Business Registration Certificate

    Giấy ĐKKD: 0102900049. Nơi cấp: Sở Kế hoạch & Đầu tư Thành phố Hà Nội

    Chịu trách nhiệm nội dung: Đặng Tùng Sơn