繁体   English   中英

使用Python和boto3向AWS中的S3对象添加权限

[英]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中的所有对象都是私有的。 然后,您可以添加权限,以便其他人可以访问您的对象。 这可以通过以下方式完成:

  • 对单个对象的访问控制列表权限
  • 桶策略 (根据路径,IP地址,引荐来源网址等,授予广泛的访问权限)
  • IAM用户和组 (向具有AWS凭证的用户授予权限)
  • 预先签署的网址

可以使用预签名URL来授予对S3对象的访问权限,作为“覆盖”访问控制的一种方式。 通常的私有对象可以通过附加过期时间和签名来通过URL访问。 这是无需Web服务器即可提供私人内容的好方法。

您可以提供一个仅临时访问所需人员/应用程序的URL,而不是向所有人临时开放访问权限。

您说您的目标是“给予临时许可,以将文件从S3下载到EC2实例的临时文件夹中” 为此,只需让您的应用程序生成预签名URL,然后就可以使用该URL来下载文件。 无需更改 S3对象的权限

看到:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM