2017-11-17 7 views
0

boto、boto3、またはtinys3のようなモジュールを使わずにxmlを直接S3にアップロードしたいと思います。Pythonリクエストを使って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)は

+0

公式の文書を参照してください:http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html要求の正確な内容を明確にします。 –

+0

@mjabraham上記以外のモジュールを使用したいですか? – harshil9968

答えて

1

では、次のawscliをインストールする必要があり、要求にAWSAccessKeyとAWSSecretAccessKeyを適用する方法を把握する事を取得したいのですがこれはdocumentationです。 コマンドラインシェルでaws configureを実行し、指示に従います。ファイルをアップロードする

、その方がはるかに簡単代わりboto

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

を使用して、あなたのpython subprocessと組み合わせるaws s3 cpコマンドを使用することができます。

pip install awscli 
aws configure # enter your AWSAccessKey and AWSSecretAccessKey credentials 

AWSAccessKeyAWSSecretAccessKey~/.aws内部に格納されます:あなたはのboto、boto3、またはtinys3のようなモジュールを使用せずに、XMLの直接S3にアップロードしたい場合は

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

私はawscli使用することをお勧めしますフォルダは永久にaws configureの後に使用します。

そして、あなたのpythonを使用してファイルをアップロードすることができます。

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

ドキュメントはhereです。

関連する問題