2017-08-25 34 views
0

我試圖生成在使用Python boto3訪問存儲在AWS S3的照片簽名,以獲得多個簽名。以下是我正在使用的代碼:是否有可能在一次使用boto3

# pass in the credentials and generate an s3 session 
s3_session = boto3.Session(
     aws_access_key_id=aws_access_key, 
     aws_secret_access_key=aws_secret_key) 

# now create an s3 client 
c = s3_session.client('s3') 

signature = c.generate_presigned_url('get_object', 
       ExpiresIn=expiry_time, 
       Params={'Bucket': bucket, 
         'Key': path 
       }) 

我試圖一次爲許多文件執行此操作。是否可以同時傳遞多個密鑰(或者更廣泛地說,一次獲得多個簽名),而不是通過循環遍歷每個密鑰?我想傳遞的path列表,但我得到了ParamValidationError

+0

我不認爲這是可能與本地Boto3。你必須循環每個鍵。 – helloV

回答

0

generate_presigned_url()函數一次只生成一個簽名。

請注意,其不涉及回撥到AWS - 簽名是根據提供的信息在本地計算的。因此,只需在循環中調用它,您將很快生成結果。

然而,這是很奇怪的,你想在同一時間產生很多簽名。正常用法是在用戶請求對象時生成預先簽名的URL。這樣,URL可以是有時間限制的(例如5分鐘)。 5分鐘後,該URL將不再起作用。

許多人似乎想生成前簽署的網址,並將其保存在數據庫中,但是這是一個反模式,因爲該網址沒有涉及到當前用戶的到期持續時間。

底線:根據需要隨時生成預先簽名的URL。

相關問題