Я пытаюсь прочитать какой-то json-файл из корзины s3, а затем пытаюсь отправить данные в rds и красное смещение (используя post api, разработанный / предназначенный для этого).
Я подошел, чтобы сделать это в2 способа использования boto3.Ниже приведены те:
1-й способ:
import boto3
import json
import requests
url = 'xxxx.us-east-1.elb.amazonaws.com/v1'
headers = {'content-type': 'application/json', 'Host': 'development.my.dns.com'}
endpoint = url+'/my/post/endpoint'
s3_client = boto3.client("s3")
fileObj = s3_client.get_object(Bucket='my-bucket-name', Key='my-key-name'])
data = fileObj['Body'].read().decode('utf-8')
with requests.request('POST', endpoint, data=data, headers=headers, auth=(username, pwd), verify=False, stream=True) as r:
print("Status Code:",r.status_code)
2-й способ:
import boto3
import json
import requests
url = 'xxxx.us-east-1.elb.amazonaws.com/v1'
headers = {'content-type': 'application/json', 'Host': 'development.my.dns.com'}
endpoint = url+'/my/post/endpoint'
s3_res = boto3.resource('s3')
contentObj = s3_res.Object('my-bucket-name', 'my-key-name')
fileContent = contentObj.get()['Body'].read().decode('utf-8')
data = json.dumps(json.loads(fileContent))
with requests.request('POST', endpoint, data=data, headers=headers, auth=(username, pwd), verify=False, stream=True) as r:
print("Status Code:",r.status_code)
В принципе все одинаково(url
, endpoint
, headers
, requests.request
) и type(data)
равно <class 'str'>
в обоих подходах.Но коды состояния всегда разные.
2-й способ дает Status Code: 200
.Но 1-й способ дает Status Code: 413
или Status Code: 502
случайным образом
Может ли кто-нибудь объяснить, почему это так?что отличается в вышеупомянутых двух подходах?Я пытаюсь понять, что происходит, когда boto3 read()
данные по-разному.