[英]Add permission to a S3 object in AWS using Python and boto3
我正在編寫代碼以向S3中的存儲桶中的對象添加權限。 這將在已經存在的權限上添加一個權限,然后我要對該文件執行操作,然后刪除保留原始權限的創建的權限。
我想使用python的boto3庫執行此操作。
到目前為止,我編寫的代碼是-
object_acl = s3.ObjectAcl(bucket_name,filename)
response = object_acl.put(AccessControlPolicy={
'Grants': [
{
'Grantee': {
'DisplayName': 'DefaultPermisson',
'ID': '66414256532656',
'Type': 'CanonicalUser'
},
'Permission': 'FULL_CONTROL'
},
],
})
print response
這將產生錯誤,並且我無法創建新的權限。 需要幫助。
除了授予文件臨時下載訪問權限之外,最合適的解決方案是使用Amazon S3預簽名URL 。
默認情況下,Amazon S3中的所有對象都是私有的。 然后,您可以添加權限,以便其他人可以訪問您的對象。 這可以通過以下方式完成:
可以使用預簽名URL來授予對S3對象的訪問權限,作為“覆蓋”訪問控制的一種方式。 通常的私有對象可以通過附加過期時間和簽名來通過URL訪問。 這是無需Web服務器即可提供私人內容的好方法。
您可以提供一個僅臨時訪問所需人員/應用程序的URL,而不是向所有人臨時開放訪問權限。
您說您的目標是“給予臨時許可,以將文件從S3下載到EC2實例的臨時文件夾中” 。 為此,只需讓您的應用程序生成預簽名URL,然后就可以使用該URL來下載文件。 無需更改 S3對象的權限 。
看到:
aws s3 presign
文檔: presign命令
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.