我想在不使用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应用于请求
答案 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"])