Aws S3 – AWS S3 客户端

S3Client 类为与 AWS S3 存储交互提供了一个方便的接口。它支持文件上传、下载和删除等操作,同时通过 HTTP SigV4 身份验证确保安全通信。

初始化客户端

S3Client

class S3Client(region=None, access_key=None, secret_key=None, bucket=None, config_path="config.json", download_path="")

参数:

  • region (str, 可选) : 指定S3存储桶所在的AWS区域。
  • access_key (str, 可选) : 用于身份验证的 Access Key。
  • secret_key (str, 可选) : 用于身份验证的 Secret Key。
  • bucket (str, 可选) : S3 存储桶的名称。
  • config_path (str, 可选) : JSON 配置文件的路径。默认为 config.json
  • download_path (str, 可选) : 用于存储下载文件的本地目录。默认为空字符串。

示例:

  • 使用显示参数初始化
from s3client import S3Client

client = S3Client(
    region="eu-west-3",
    access_key="AKIA...",
    secret_key="A2HAXbc...",
    bucket="my-bucket",
    download_path="s3_downloads/"
)
  • 使用配置文件初始化
from s3client import S3Client

client = S3Client(config_path="usr/config.json")

S3 通信

S3Client 使用 HTTP SigV4 签名的请求来执行上传、下载和从 AWS S3 存储中删除文件等操作。

upload_file

upload_file(filepath, object_key, content_type='application/octet-stream')

将本地文件上载到指定的AWS S3存储桶。

参数:

  • filepath (str) : 要上载的文件的本地路径。
  • object_key (str) : 在S3存储桶中存储文件的密钥(路径)。
  • content_type (str, 可选) : 文件的 MIME 类型(默认: application/octet-stream )。

返回值:

  • 响应对象 包含服务器返回的所有信息,如响应状态代码、响应头和响应体。

  • 返回 None 如果发生任何异常。

download_to_file

download_to_file(object_key)

从 S3 存储桶下载一个文件,并将其保存在配置或构造函数中定义的 download_path 中。

参数:

  • object_key (str) : 要从S3存储桶下载的文件的密钥(路径)。

返回值:

  • 响应对象 包含服务器返回的所有信息,如响应状态代码、响应头和响应体。

  • 返回 None 如果发生任何异常。

delete_object

delete_object(object_key)

从 S3 存储桶中删除一个文件。

参数:

  • object_key (str) : 要从S3存储桶中删除的文件的密钥(路径)。

返回值:

  • 响应对象 包含服务器返回的所有信息,如响应状态代码、响应头和响应体。

  • 返回 None 如果发生任何异常。

示例代码

from s3client import S3Client

s3_client = S3Client(
    region="eu-west-3",
    access_key="YOUR_ACCESS_KEY",
    secret_key="YOUR_SECRET_KEY",
    bucket="your-bucket-name",
    download_path="s3_downloads/"
)

# Upload a file
s3_client.upload_file(filepath='usr/hello.txt', object_key='test-folder/hello.txt',content_type='text/str')

# Download a file
s3_client.download_to_file(object_key='test-folder/hello.txt')

# Delete a file
s3_client.delete_file(object_key='test-folder/hello.txt')