介绍
Vultr 对象存储是一种高度可扩展的存储解决方案。 它使您可以灵活地按需添加可扩展存储并通过 S3 API 对其进行管理。 它提供了一个平台来存储大量文件,而无需担心处理文件系统的底层复杂性。 它通过将文件冗余保存在多个位置来确保文件的安全性,这使其成为可靠的存储解决方案。
您可以使用 Boto3 在 Python 应用程序中使用对象存储,这是一个 Python 库,使开发人员能够与 S3 API 交互,以编程方式管理对象存储。
本文演示了怎样使用 Python 和 Boto3 SDK 以编程方式执行常见操作,例如创建或删除存储桶和对象。
先决条件
- Vultr 对象存储 在您的帐户中配置.
- 对象存储的访问密钥和密钥。
- Python,版本 3.6 或更高版本。
安装 Boto3 SDK
安装 boto3
使用 Python 包管理器。
pip install boto3
创建 Boto3 客户端
要将 Vultr 对象存储与 Boto3 一起使用,您需要使用 S3 凭证创建一个 Boto3 客户端实例。 在以下步骤中,您将使用此客户端对对象存储执行操作。 用您的凭据替换前三个变量。
import boto3
hostname = "HOSTNAME"
secret_key = "SECRET_KEY"
access_key = "ACCESS_KEY"
session = boto3.session.Session()
client = session.client('s3', **{
"region_name": hostname.split('.')[0],
"endpoint_url": "https://" + hostname,
"aws_access_key_id": access_key,
"aws_secret_access_key": secret_key
})
桶操作
存储桶就像传统文件系统中的文件夹。 您需要在对象存储中至少有一个存储桶才能在其上上传文件。 您的存储桶的名称在区域范围内应该是唯一的,您可以通过在名称中添加随机前缀来实现,例如 example, 11293x-name
.
列出所有存储桶
使用 list_buckets()
方法来检索对象存储中的存储桶列表。
response = client.list_buckets()
print(response)
创建一个新存储桶
使用 create_bucket()
在对象存储中创建新存储桶的方法。
response = client.create_bucket(Bucket="example-bucket")
print(response)
删除空桶
使用 delete_bucket()
从对象存储中删除空存储桶的方法。
response = client.delete_bucket(Bucket="example-bucket")
print(response)
删除非空存储桶
要删除非空存储桶,您需要通过迭代可用对象列表来删除其中的所有对象。
object_list = client.list_objects(Bucket="example-bucket")
for object in object_list['Contents']:
client.delete_object(Bucket="example-bucket", Key=object['Key'])
response = client.delete_bucket(Bucket="example-bucket")
print(response)
对象操作
存储在存储桶中的对象,例如传统文件系统中的文件。 在 S3 API 中,key 是文件名,body 是文件的字节内容。
列出所有对象
使用 list_objects()
方法来检索存储桶中的对象列表。
response = client.list_objects(Bucket="example-bucket")
print(response)
下载对象
使用 download_file()
从存储桶下载对象的方法。
response = client.download_file('example-bucket', 'file.ext', 'path/to/local-file/name.ext')
print(response)
上传新对象
使用 put_object()
方法将新文件上传到存储桶。
with open('path/to/file/name.ext', 'rb') as file:
response = client.put_object(Bucket="example-bucket", Key='file.ext', Body=file, ACL='private')
print(response)
设置 ACL
参数为 public-read
如果您希望对象可公开访问。
删除对象
使用 delete_object()
从存储桶中删除对象的方法。
response = client.delete_object(Bucket="example-bucket", Key='path/to/object/name.ext')
print(response)
创建预签名 URL
预签名 URL 将对象的临时访问权限授予没有凭据或访问对象权限的用户。
创建预签名 URL 以下载文件
使用 generate_presigned_url()
生成预签名 URL 以下载文件的方法。
response = client.generate_presigned_url(ClientMethod='get_object',
Params={'Bucket': 'example-bucket',
'Key': 'file.ext'},
ExpiresIn=300)
print(response)
这 ExpiresIn
参数接受一个整数值,定义预签名 URL 的有效秒数。
创建预签名 URL 以上传文件
使用 generate_presigned_url()
方法来生成预签名 URL 以上传新文件。
response = client.generate_presigned_url(ClientMethod='put_object',a
Params={'Bucket': 'example-bucket',
'Key': 'new-file.ext'},
ExpiresIn=300)
print(response)
这 ExpiresIn
参数接受一个整数值,定义预签名 URL 的有效秒数。
结论
在本文中,您学习了怎样使用 Python 和 Boto3 SDK 以编程方式执行常见操作,例如创建或删除存储桶和对象。 更多Boto3相关信息,请访问官方 Boto3 文档.
注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com