使用 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 Pre-Signed URL.
默认情况下,Amazon S3 中的所有对象都是私有的。然后您可以添加权限,以便人们可以访问您的对象。这可以通过以下方式完成:
- 访问控制列表对单个对象的权限
- A 存储桶策略(基于路径、IP 地址、引荐来源网址等授予广泛访问权限)
- IAM 用户和组(向具有 AWS 凭证的用户授予权限)
- 预签名 URLs
A Pre-Signed URL 可用于授予对 S3 对象的访问权限,作为 "overriding" 访问控制的一种方式。通过附加到期时间和签名,可以通过 URL 访问通常私有的对象。这是无需 Web 服务器即可提供私人内容的好方法。
您可以提供一个 URL,仅向您希望的 people/applications 提供临时访问权限,而不是暂时向所有人开放访问权限。
你说你的目标是"to give a temporary permission to download a file from S3 into a temp folder on a EC2 instance"。为此,只需让您的应用程序生成预签名 URL,然后即可使用它来下载文件。 无需更改 S3 对象的权限。
参见:
- Boto 文档:Generating Presigned URLs
- AWS Command-Line Interface (CLI)
aws s3 presign
documentation: presign command
我正在编写代码以向 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 Pre-Signed URL.
默认情况下,Amazon S3 中的所有对象都是私有的。然后您可以添加权限,以便人们可以访问您的对象。这可以通过以下方式完成:
- 访问控制列表对单个对象的权限
- A 存储桶策略(基于路径、IP 地址、引荐来源网址等授予广泛访问权限)
- IAM 用户和组(向具有 AWS 凭证的用户授予权限)
- 预签名 URLs
A Pre-Signed URL 可用于授予对 S3 对象的访问权限,作为 "overriding" 访问控制的一种方式。通过附加到期时间和签名,可以通过 URL 访问通常私有的对象。这是无需 Web 服务器即可提供私人内容的好方法。
您可以提供一个 URL,仅向您希望的 people/applications 提供临时访问权限,而不是暂时向所有人开放访问权限。
你说你的目标是"to give a temporary permission to download a file from S3 into a temp folder on a EC2 instance"。为此,只需让您的应用程序生成预签名 URL,然后即可使用它来下载文件。 无需更改 S3 对象的权限。
参见:
- Boto 文档:Generating Presigned URLs
- AWS Command-Line Interface (CLI)
aws s3 presign
documentation: presign command