使用python和boto在s3中创建一个文件

时间:2015-04-02 21:11:37

标签: amazon-web-services amazon-s3 boto

我在下面有一些链接,当我尝试访问它时,它会显示一个xml文件说" Acess被拒绝"。

我需要访问aws管理控制台并将此part-0000文件公开,以便我可以访问它。

你知道如何使用boto与python授予权限,这样我就可以访问这个链接而无需转到aws managmet控制台并将文件公开?

downloadLink = 'https://s3.amazonaws.com/myFolder/uploadedfiles/2015423/part-00000'

4 个答案:

答案 0 :(得分:26)

这应该会给你一个想法:

import boto.s3
conn = boto.s3.connect_to_region('us-east-1')  # or region of choice
bucket = conn.get_bucket('myFolder')
key = bucket.lookup('uploadedfiles/2015423/part-00000')
key.set_acl('public-read')

在这种情况下,public-read是S3支持的一个固定ACL策略,允许任何人读取该文件。

答案 1 :(得分:10)

from boto3.s3.transfer import S3Transfer
import boto3

# ...
# have all the variables populated which are required below

client = boto3.client('s3', aws_access_key_id=access_key,
                      aws_secret_access_key=secret_key)
transfer = S3Transfer(client)
transfer.upload_file(filepath, bucket_name, folder_name+"/"+filename)
response = client.put_object_acl(ACL='public-read', Bucket=bucket_name, Key="%s/%s" % (folder_name, filename))

答案 2 :(得分:3)

这似乎适用于boto 2.42.0和Python 3

s3 = boto.connect_s3()
b = s3.get_bucket('brianray')
k = Key(b)
k.key = new_file_name
k.set_contents_from_filename(new_file_name)
k.set_acl('public-read')
k.generate_url(expires_in=0, query_auth=False)

答案 3 :(得分:0)

Boto3设置ACL。好问题/答案在这里。

bucket.Acl().put(ACL='public-read')
obj.Acl().put(ACL='public-read')

在移动或操作项目时,使用obj.Acl().put...非常有用。如果执行脚本/过程特别有用。

通过https://boto3.readthedocs.io/en/latest/guide/migrations3.html#access-controls