try:
conn = boto.connect_s3(access_key,secret_access_key)
bucket = conn.get_bucket(bucket_name, validate=False)
k1 = Key(bucket)
k1.key = 'Date_Table.csv'
# k = bucket.get_key('Date_Table.csv')
k1.make_public()
k1.get_contents_to_filename(tar)
except Exception as e:
print(e)
我收到错误
S3ResponseError:403禁止
AccessDenied
存取 DeniedD9ED8BFF6D6A993Eaw0KmxskATNBTDUEo3SZdwrNVolAnrt9 / PKO / EGlq6X9Gxf36fQiBAWQA7dBSjBNZknMxWDG9GI =
我尝试了所有可能性并仍然得到同样的错误..请指导我如何解决这个问题。
我尝试了以下其他方式并收到错误
调用GetObject操作时发生错误(NoSuchKey): 指定的密钥不存在。
session = boto3.session.Session(aws_access_key_id=access_key, aws_secret_access_key=secret_access_key,region_name='us-west-2')
print ("session:"+str(session)+"\n")
client = session.client('s3', endpoint_url=s3_url)
print ("client:"+str(client)+"\n")
stuff = client.get_object(Bucket=bucket_name, Key='Date_Table.csv')
print ("stuff:"+str(stuff)+"\n")
stuff.download_file(local_filename)
GE
答案 0 :(得分:0)
始终使用boto3。 boto已弃用。
只要您设置AWS CLI凭据,就不需要传递硬编码凭据。彻底阅读boto3 credential setup。
除非您使用不同的区域和用户个人资料,否则没有理由启动boto3.session。
花时间研究服务客户端(boto3.client)与服务资源(boto3.resources)之间的区别。
低级别boto3.client更容易用于实验。如果需要传递任意对象,请使用高级别的boto3.resource。
以下是boto3.client("s3").download_file的简单代码。
import boto3
# initiate the proper AWS services client, i.e. S3
s3 = boto3.client("s3")
s3.download_file('your_bucket_name', 'Date_Table.csv', '/your/local/path/and/filename')