我有一個受密碼保護的zip檔案存盤在Amazon S3中,我需要從一個python程式中讀取該檔案,從中提取csv檔案并讀取到一個資料框架中。最初,我是使用物件鍵和桶的名稱來做的。
import zipfile
import boto3
import io
import pandas as pd
s3 = boto3.client('s3', aws_access_key_id="<access_key>",
aws_secret_access_key="<secret_key>", region_name="<regional>")
s3_resource = boto3.resource('s3', aws_access_key_id="<acces_key>",
aws_secret_access_key="<secret_key>", region_name="<regional>")
obj = s3.get_object(Bucket="<bucket_name>"/span>, Key="<obj_key>")
with io.BytesIO(obj["body"].read() as tf:
# rewind the file[/span]。
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來讀取壓縮檔案?我怎么做呢?
uj5u.com熱心網友回復:
預簽名的URL包含所有你需要下載檔案的資訊。但為此你不需要使用boto3。相反,你應該使用常規的python工具來下載檔案(或here ),從互聯網上url將是你預先簽署的URL。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/319183.html
標籤:
下一篇:用預簽名的url PUT請求上傳檔案到AmazonS3,但在"StringToSign"中的"GET"得到錯誤"SignatureDoesNotMat
