【发布时间】:2021-11-11 02:56:01
【问题描述】:
我有一个存储在 Amazon S3 中的受密码保护的 zip 文件,我需要从 python 程序中读取该文件,从中提取 csv 文件并读取到数据帧。最初,我使用对象键和存储桶名称。
import zipfile
import boto3
import io
import pandas as pd
s3 = boto3.client('s3', aws_access_key_id="<acces_key>",
aws_secret_access_key="<secret_key>", region_name="<region>")
s3_resource = boto3.resource('s3', aws_access_key_id="<acces_key>",
aws_secret_access_key="<secret_key>", region_name="<region>")
obj = s3.get_object(Bucket="<bucket_name>", Key="<obj_key>")
with io.BytesIO(obj["Body"].read()) as tf:
# rewind the file
tf.seek(0)
with zipfile.ZipFile(tf, mode='r') as zipf:
df = pd.read_csv(zipf.open('<file_name.csv>', pwd=b'<password>'), sep='|')
print(df)
但由于一些安全问题,我将无法再执行此操作。也就是说,我不会有对象键和存储桶名称。而且由于我不会有钥匙,我不会有
file_name.csv 要么。我所拥有的只是一个预签名的 URL。是否可以使用预签名的 URL 读取 zip 文件?我该怎么做?
【问题讨论】:
标签: python-3.x amazon-web-services amazon-s3 boto3