Boto3 - S3 存储桶策略更新

希夫库马尔·马勒萨帕

我正在尝试使用boto3. 请参考以下桶的初始/现有桶策略:

{
    "Version": "2012-10-17",
    "Id": "Policy1604310539665",
    "Statement": [
        {
            "Sid": "Stmt1604310537860",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::xxx:root"
            },
            "Action": [
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucket",
                "arn:aws:s3:::bucket*"
            ]
        }
    ]
}

我正在尝试使用以下代码段修改上述策略,我正在尝试将另一个角色附加到存储桶策略:

import boto3
import json

s3 = boto3.client('s3')
result = s3.get_bucket_policy(Bucket=bucket_name)   
policy_statement=json.loads(result['Policy'])

store = policy_statement['Statement'][0]['Principal']['AWS']
del policy_statement['Statement'][0]['Principal']['AWS']


if(isinstance(store, str)):
    role_arn_list = [role_arn] + [store]
    policy_statement['Statement'][0]['Principal'].update({"AWS": role_arn_list})
else:
    role_arn_list = [role_arn] + store
    policy_statement['Statement'][0]['Principal'].update({"AWS": role_arn_list})
    
    
# Convert the policy from JSON dict to string
policy_new = json.dumps(policy_statement)
# Update the policy of the given bucket
s3 = boto3.client('s3')
s3.put_bucket_policy(Bucket=bucket_name, Policy=policy_new)

上面的代码工作正常,但是当我尝试将策略放入存储桶时,出现MalformedPolicy异常。当我尝试调试并找到使用上述代码创建的策略时,我可以看到以下策略:

{
    'Version': '2012-10-17',
    'Id': 'Policy1604310539665',
    'Statement': [{
        'Sid': 'Stmt1604310537860',
        'Effect': 'Allow',
        'Principal': {
            'AWS': ['arn:aws:iam::xxx:role/xx-xx-xx', 'arn:aws:iam::xx:root', 
            'AROAVCQ6H5MBRCO7T5NKB'
            ]
        },
        'Action': ['s3:ListBucket', 's3:PutObject'],
        'Resource': ['arn:aws:s3:::bucket', 'arn:aws:s3:::bucket/*']
    }]
}

问题:我无法理解随机字符串AROAVCQ6H5MBRCO7T5NKB的来源以及如何处理?

约翰·罗滕斯坦

以 开头的标识符AROA是 IAM 角色的唯一 ID,就像访问密钥总是以 开头一样AKIA

请参阅:IAM 标识符 - AWS Identity and Access Management

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Boto3 S3,按最近修改过的存储桶排序

使用boto3检查s3中存储桶中是否存在密钥

从boto3检索S3存储桶中的子文件夹名称

Boto3从S3存储桶下载所有文件

列出使用Python和Boto3的S3存储桶的目录内容吗?

使用Boto3从S3存储桶读取文件内容

使用boto3,Python从S3存储桶中查找最新的CSV文件

使用Boto3将文件上传到带前缀的S3存储桶

随需应变的S3存储桶可用于boto3 API吗?

Python AWS Boto3:如何从S3存储桶读取文件?

Lambda Python boto3将文件存储在S3存储桶中

Boto3仅获得特定区域的S3存储桶

使用boto3访问其他AWS用户S3存储桶

从S3存储桶读取文件到PySpark Dataframe Boto3

boto3 aws检查s3存储桶是否已加密

Boto3在将文件上传到S3存储桶时遇到问题

可以使用boto3获得S3存储桶使用的带宽吗?

python boto3:AWS Rekognition无法访问S3存储桶

如何使用boto3从特定对象开始遍历s3存储桶?

如何使用lambda函数和boto3从s3存储桶读取csv文件?

使用boto3从S3存储桶下载文件时出现ValueError吗?

Amazon S3 boto3如何遍历存储桶中的对象?

卓:如何通过CloudFormation更新现有的S3存储桶策略?

使用 boto3 清空 s3 存储桶的最快方法是什么?

AWS S3 存储桶策略

boto3:使用 IAM 角色的 S3 存储桶放置事件通知失败

如何使用 Python Boto3 获取 S3 存储桶的总数

无法使用 python boto3 模块连接到 nexrad aws s3 存储桶

使用 Boto3 从 S3 存储桶创建选定对象的列表