使用Python请求上传到S3

时间:2017-11-17 11:42:21

标签: python amazon-s3 python-requests

我想在不使用boto,boto3或tinys3等模块的情况下将xml直接上传到S3。

到目前为止,我写过:

 url = "https://my-test-s3.s3.amazonaws.com"
 with open(xml_file,'rb') as data:
     requests.put(url, data=data)

然后我走了,然后在我的S3存储桶上设置AllowedOrigin以接受我服务器的地址。

运行时不会出错,但是,它似乎也没有上传任何内容。

任何帮助都将受到赞赏---我想(a)获取要上传的内容,以及(b)弄清楚如何将AWSAccessKey和AWSSecretAccessKey应用于请求

2 个答案:

答案 0 :(得分:2)

如果您想在不使用boto,boto3或tinys3等模块的情况下直接将xml上传到S3,我建议使用awscli

pip install awscli
aws configure  # enter your AWSAccessKey and AWSSecretAccessKey credentials
使用AWSAccessKey后,

AWSSecretAccessKey~/.aws将永久存储在aws configure文件夹中。

然后你可以使用python上传文件:

os.system("aws s3 cp {0} s3://your_bucket_name/{1}".format(file_path, file_name))

文档为here

答案 1 :(得分:1)

您需要在此documentation之后安装awscli。 然后在命令行shell中,执行aws configure并按照说明进行操作。

上传文件,使用boto

更容易
import boto3
s3 = boto3.resource('s3')
s3.meta.client.upload_file(xml_file, 'yourbucket', 'yours3filepath')

或者,您可以将aws s3 cp命令与python subprocess结合使用。

subprocess.call(["aws", "s3", "cp", xml_file, "yours3destination"])