[英]Error 500 while Uploading CSV file to S3 bucket using boto3 and python flask
[英]Invalid timestamp error when trying to get CSV file from and S3 bucket using boto3 module in python2.7
我試圖將.csv文件存儲在S3存儲桶中。 CSV編譯器將CSV上載到S3存儲桶,我的代碼(python 2.7)在Unix環境中運行。 CSV看起來像這樣(我已包含回車符):
Order,Item,Date,Quantity\r
1,34975,8/4/15,10\r
2,921644,3/10/15,2\r
3,N18DAJ,1/7/15,10\r
4,20816,12/12/15,9\r
從s3存儲桶獲取文件的代碼:
import boto3
def readcsvFromS3(bucket_name, key):
s3 = boto3.resource('s3')
obj = s3.Object(bucket_name=bucket_name, key=key)
response = obj.get()
data = response['Body'].read()
response = obj.get()
行發生錯誤。 而我得到的錯誤是:
Traceback (most recent call last):
File "slot.py", line 163, in <module>
columnNames, rowArray = neo.readcsvFromS3(bucket_name=config.s3bucket, key=config.orde
File "/home/jcgarciaram/WMSight/wmsight-api/api/utilities/pythonScripts/slotting/neo4jUt
response = obj.get()
File "/usr/local/lib/python2.7/dist-packages/boto3/resources/factory.py", line 481, in d
response = action(self, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/boto3/resources/action.py", line 83, in __c
response = getattr(parent.meta.client, operation_name)(**params)
File "/usr/local/lib/python2.7/dist-packages/botocore/client.py", line 228, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/local/lib/python2.7/dist-packages/botocore/client.py", line 481, in _make_api
operation_model, request_dict)
File "/usr/local/lib/python2.7/dist-packages/botocore/endpoint.py", line 117, in make_re
return self._send_request(request_dict, operation_model)
File "/usr/local/lib/python2.7/dist-packages/botocore/endpoint.py", line 144, in _send_r
request, operation_model, attempts)
File "/usr/local/lib/python2.7/dist-packages/botocore/endpoint.py", line 203, in _get_re
parser.parse(response_dict, operation_model.output_shape)),
File "/usr/local/lib/python2.7/dist-packages/botocore/parsers.py", line 208, in parse
parsed = self._do_parse(response, shape)
File "/usr/local/lib/python2.7/dist-packages/botocore/parsers.py", line 570, in _do_pars
member_shapes, final_parsed)
File "/usr/local/lib/python2.7/dist-packages/botocore/parsers.py", line 626, in _parse_n
member_shape, headers[header_name])
File "/usr/local/lib/python2.7/dist-packages/botocore/parsers.py", line 226, in _parse_s
return handler(shape, node)
File "/usr/local/lib/python2.7/dist-packages/botocore/parsers.py", line 149, in _get_tex
return func(self, shape, text)
File "/usr/local/lib/python2.7/dist-packages/botocore/parsers.py", line 380, in _handle_
return self._timestamp_parser(text)
File "/usr/local/lib/python2.7/dist-packages/botocore/utils.py", line 344, in parse_time
raise ValueError('Invalid timestamp "%s": %s' % (value, e))
ValueError: Invalid timestamp "Wed, 16 Jan 48199 20:37:02 GMT": year is out of range
我一直在研究,但似乎無法弄清楚這個問題。 有任何想法嗎?
經過幾天的搜索和調試,我們終於確定了問題的原因。 我們嘗試以JSON格式而不是CSV格式上載文件,並且當我們嘗試在Python中使用boto3下載文件時看到相同的錯誤時,我們會感到驚訝。
我們開始在S3中查看文件本身的屬性(右鍵單擊文件並單擊“屬性”)而不是內容。
我們找到了一個名為元數據的部分,並找到了以下條目:
Key: Expires / Value: Tue, 15 Jan 48199 02:16:52 GMT.
將值的年份更改為2200之后的日期后,一切正常! 我們現在正在調查我們在Node.js中的上傳過程,看看我們如何確保正確設置此值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.