AWS-S3-GetBucketPolicy

时间:2019-06-29 23:44:15

标签: python amazon-s3

难以理解为什么我的get_bucket_policy函数不起作用。我已经对错别字进行了两次检查,并且我有一项政策,但出现此错误:

An error occurred (NoSuchBucketPolicy) when calling the GetBucketPolicy operation: The bucket policy does not exist

来自此脚本:

import boto3
import json

BUCKET_NAME ='patrick-s3-2018-bucket'

def s3_client():
    s3 = boto3.client('s3')
    """:type : pyboto3.s3"""
    return s3

def create_bucket(bucket_name):
    return s3_client().create_bucket(
        Bucket=bucket_name,
        CreateBucketConfiguration={
            'LocationConstraint': 'us-east-2'
            }
        )

def create_bucket_policy():
    bucket_policy = {
        "Version": "2012-10-17",
        "Statement":[
            {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": "*",
            "Action":["s3:*"],
            "Resource":["arn:aws:s3:::patricksbucket/*"]
            }
        ]
    }
    policy_string = json.dumps(bucket_policy)

    return s3_client().put_bucket_policy(
        Bucket=BUCKET_NAME,
        Policy=policy_string
    )
def list_buckets():
    return s3_client().list_buckets()

def get_bucket_policy():
    return s3_client().get_bucket_policy(Bucket=BUCKET_NAME)


if __name__ == '__main__':
    print(get_bucket_policy())

我还尝试使用完整的实际存储桶名称,而不仅仅是变量,但这并没有解决问题。

这个问题似乎在网上没有得到很好的记录,在使用AWS资源时,我很难将他们的示例与我正在使用的UDEMY类示例进行比较

1 个答案:

答案 0 :(得分:0)

全部

回答我自己的问题:

第一个错误:我的"Resource":["arn:aws:s3:::patricksbucket/*"]BUCKET_NAME ='patrick-s3-2018-bucket'不同 第二个错误:我需要create_bucket