2017-11-17 1 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을 설정했습니다.

실행 중 오류가 발생하지 않지만 아무 것도 업로드하지 않는 것 같습니다.

어떤 도움을 주시면 감사하겠습니다

--- I (a)는 업로드와 (b)

+0

공식 문서보기 : http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html 요청의 정확한 내용을 분명히합니다. –

+0

@mjabraham 위에서 언급 한 것 외에 다른 모듈을 사용 하시겠습니까? – harshil9968

답변

1

당신이 다음 awscli를 설치해야합니다 요청에 AWSAccessKey 및 AWSSecretAccessKey을 적용하는 방법을 알아 내기 위해 일을 좀하고 싶습니다 이 documentation. 그런 다음 명령 줄 셸에서 aws configure을 실행하고 지침을 따릅니다.

당신은 파이썬 subprocess과 함께 aws s3 cp 명령을 사용할 수 있습니다, 그 훨씬 쉽게 또는 boto

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

을 사용하여 파일을 업로드합니다.

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.

그리고 당신은 파이썬을 사용하여 파일을 업로드 할 수 있습니다 :

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

문서가 here이다.