难以理解为什么我的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类示例进行比较
答案 0 :(得分:0)
全部
回答我自己的问题:
第一个错误:我的"Resource":["arn:aws:s3:::patricksbucket/*"]
与BUCKET_NAME ='patrick-s3-2018-bucket'
不同
第二个错误:我需要create_bucket