[英]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.