📅  最后修改于: 2023-12-03 15:36:15.012000             🧑  作者: Mango
Amazon S3(Simple Storage Service)是亚马逊 Web 服务(AWS)提供的一种对象存储服务。S3 可以存储和检索任何数量的数据,且保证数据的可靠性和安全性。本文将介绍如何使用 Python 从 S3 存储桶中获取数据。
使用 Python 获取 S3 存储桶中的数据需要安装 boto3 库。可以使用 pip 命令安装:
!pip install boto3
在 Python 中连接 S3 存储桶需要一个有效的 AWS 访问密钥和秘密密钥。可以通过 AWS IAM(Identity and Access Management)服务来创建一个具有 S3 访问权限的用户,并获取访问凭证。
访问凭证包括以下三个参数:
使用获取到的访问凭证连接 S3 存储桶。可以使用以下代码连接 S3:
import boto3
s3 = boto3.resource('s3',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
aws_session_token=AWS_SESSION_TOKEN)
bucket = s3.Bucket('bucket-name')
其中,AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY 和 AWS_SESSION_TOKEN 需要替换为实际的访问凭证参数。'bucket-name' 是要读取数据的 S3 存储桶的名称。使用 s3.Bucket() 方法可以实例化一个 S3 存储桶对象。
可以使用 Bucket.objects.all() 方法获取存储桶中的所有对象:
objects = bucket.objects.all()
遍历 objects 对象可以获取存储桶中的每个对象,可以使用以下代码获取某个对象的数据:
for obj in objects:
body = obj.get()['Body'].read()
print(body)
其中,obj.get() 方法返回一个包含对象数据的字典。'Body' 键包含文件的内容,可以使用 read() 方法读取并返回数据。
除了使用 get() 方法获取文件数据之外,也可以使用文件对象来获取数据:
obj = s3.Object('bucket-name', 'file-name')
body = obj.get()['Body'].read()
其中,'file-name' 是要获取的文件的名称。使用 s3.Object() 方法可以实例化一个 S3 存储桶中的对象。
完整代码片段如下:
import boto3
s3 = boto3.resource('s3',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
aws_session_token=AWS_SESSION_TOKEN)
bucket = s3.Bucket('bucket-name')
objects = bucket.objects.all()
for obj in objects:
body = obj.get()['Body'].read()
print(body)
obj = s3.Object('bucket-name', 'file-name')
body = obj.get()['Body'].read()
print(body)
以上就是使用 Python 获取 S3 存储桶中数据的全部步骤。