python - 如何自动化 AWS s3 存储桶对象的权限
问题描述
我有一个 s3 存储桶,多个帐户正在将对象放入其中。我希望拥有该存储桶的帐户也拥有这些文件。
该脚本使用 boto3 来命名和放置对象,所以我会在这个脚本中设置权限吗?
或者是否有可以强制对新文件拥有所有权的 s3 策略?
我更喜欢存储桶政策,但我怀疑这是否可能。文件名是
“帐户# 和 date.json”
account_id = (boto3.client('sts').get_caller_identity()['Account'])
s3.Object('S3bucketname', account_id + "_" + date_fmt + ".json").put(Body=json.dumps(iplist))
编辑:我应该补充一点,试图从这个包含对象的存储桶中读取的进程具有与之关联的角色,所以我假设我的委托人是
arn:aws:iam::ACCOUNT_ID_of_bucket:role/ROLENAME
解决方案
boto3.resource('s3').ObjectAcl('S3BUCKETNAME', account_id + "_" + date_fmt + ".json").put(ACL='bucket-owner-full-control')
以上将让存储桶所有者完全控制由具有此名称格式的 lambda 作业创建并放入存储桶的任何对象。
推荐阅读
- reactjs - 在 React 中使用 setInterval 没有按预期工作
- python - for循环中python内置方法过滤器的神秘行为
- java - 使用 java LocalDateTime 解析 Scala 日期
- angular - 在 Angular 10 上使用 `ng add @ngrx/store` 会出错并添加旧版本的 ngrx
- javascript - 在 Vue 中使用 $refs 触发“click”之前有条件地更新 INPUT 元素的属性
- python - ImportError with scipy.misc cannot import toimage
- c++ - 我在范围内未声明的错误类有问题
- hyperledger-fabric - 如何设置 REST 服务器以与 Azure Kubernetes 服务 (AKS) 上的 Hyperledger Fabric 联盟通信
- android - 解决方案在此处为 Android 使用避免区域 Map Mobile SDK
- sql - 如何在 SQL Server 中选择非零行