编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

云计算:Python与AWS S3交互(aws s3 python)

wxchong 2024-08-22 23:43:04 开源技术 10 ℃ 0 评论

Amazon Web Services (AWS) 提供了 Simple Storage Service (S3) 作为云存储解决方案。通过 S3,用户可以存储和检索任意数量的数据,从任何地方访问。要使用 Python 与 AWS S3 进行交互,通常会使用 AWS SDK for Python,也称为 Boto3。

安装 Boto3

首先,确保安装了 Boto3。如果还没有安装,可以通过 pip 安装:

Bash

深色版本

1pip install boto3

配置 AWS 凭证

在开始之前,需要配置 AWS 凭证。这可以通过多种方式完成,包括但不限于:

  1. 环境变量:
  2. Bash
  3. 深色版本
  4. 1export AWS_ACCESS_KEY_ID=<your_access_key> 2export AWS_SECRET_ACCESS_KEY=<your_secret_key>
  5. ~/.aws/credentials 文件:
  6. Ini
  7. 深色版本
  8. 1[default] 2aws_access_key_id = <your_access_key> 3aws_secret_access_key = <your_secret_key>
  9. 直接在代码中设置 (不建议,仅适用于测试目的):
  10. Python
  11. 深色版本
  12. 1import boto3 2 3s3 = boto3.client( 4 's3', 5 aws_access_key_id='<your_access_key>', 6 aws_secret_access_key='<your_secret_key>' 7)

基本示例

接下来是一些使用 Boto3 与 S3 进行交互的基本示例。

创建 S3 客户端

Python

深色版本

1import boto3
2
3# 创建 S3 客户端
4s3_client = boto3.client('s3')

列出所有 S3 存储桶

Python

深色版本

1# 列出所有存储桶
2response = s3_client.list_buckets()
3
4# 打印存储桶名称
5for bucket in response['Buckets']:
6    print(bucket['Name'])

创建新的 S3 存储桶

Python

深色版本

1bucket_name = 'my-new-bucket'
2
3# 创建一个新的存储桶
4s3_client.create_bucket(Bucket=bucket_name)

上传文件到 S3

Python

深色版本

1file_path = '/path/to/local/file.txt'
2key = 'file.txt'  # S3 中的对象键名
3
4# 上传文件
5s3_client.upload_file(file_path, bucket_name, key)

下载文件从 S3

Python

深色版本

1destination_path = '/path/to/download/file.txt'
2
3# 下载文件
4s3_client.download_file(bucket_name, key, destination_path)

删除 S3 对象

Python

深色版本

1# 删除特定对象
2s3_client.delete_object(Bucket=bucket_name, Key=key)
3
4# 删除整个存储桶及其内容
5response = s3_client.list_objects_v2(Bucket=bucket_name)
6for obj in response.get('Contents', []):
7    s3_client.delete_object(Bucket=bucket_name, Key=obj['Key'])
8
9# 删除空存储桶
10s3_client.delete_bucket(Bucket=bucket_name)

示例代码

下面是将上述功能组合在一起的一个完整示例:

Python

深色版本

1import boto3
2
3def list_buckets(s3_client):
4    """列出所有的 S3 存储桶"""
5    response = s3_client.list_buckets()
6    return [bucket['Name'] for bucket in response['Buckets']]
7
8def create_bucket(s3_client, bucket_name):
9    """创建一个新的 S3 存储桶"""
10    s3_client.create_bucket(Bucket=bucket_name)
11
12def upload_file(s3_client, file_path, bucket_name, key):
13    """上传文件到 S3"""
14    s3_client.upload_file(file_path, bucket_name, key)
15
16def download_file(s3_client, bucket_name, key, destination_path):
17    """从 S3 下载文件"""
18    s3_client.download_file(bucket_name, key, destination_path)
19
20def delete_object(s3_client, bucket_name, key):
21    """删除 S3 中的对象"""
22    s3_client.delete_object(Bucket=bucket_name, Key=key)
23
24def delete_bucket(s3_client, bucket_name):
25    """删除 S3 存储桶及其内容"""
26    response = s3_client.list_objects_v2(Bucket=bucket_name)
27    for obj in response.get('Contents', []):
28        s3_client.delete_object(Bucket=bucket_name, Key=obj['Key'])
29    s3_client.delete_bucket(Bucket=bucket_name)
30
31if __name__ == '__main__':
32    s3_client = boto3.client('s3')
33
34    # 创建一个新的存储桶
35    bucket_name = 'example-bucket'
36    create_bucket(s3_client, bucket_name)
37
38    # 上传文件
39    file_path = '/path/to/local/file.txt'
40    key = 'file.txt'
41    upload_file(s3_client, file_path, bucket_name, key)
42
43    # 列出存储桶
44    buckets = list_buckets(s3_client)
45    print("Current buckets:", buckets)
46
47    # 下载文件
48    destination_path = '/path/to/download/file.txt'
49    download_file(s3_client, bucket_name, key, destination_path)
50
51    # 删除文件
52    delete_object(s3_client, bucket_name, key)
53
54    # 删除存储桶
55    delete_bucket(s3_client, bucket_name)

这个脚本包含了与 S3 进行基本交互所需的所有功能。你可以根据自己的需求修改和扩展这些功能。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表