簡體   English   中英

AWS Lambda Chalice 應用程序未收到請求負載

[英]AWS Lambda Chalice app not receiving request payload

我在 Python 中使用 AWS Chalice 創建了一個小的 lambda 函數。 在本地測試時,所有工作都按預期進行,我的測試請求完美無缺。 但是,當運行chalice deploy然后測試對托管 API 的相同請求時,我收到以下錯誤。

Traceback (most recent call last):
File "/var/task/chalice/app.py", line 1913, in _get_view_function_response
File "/var/task/app.py", line 34, in questions
payload = parse_qs(body)['data'][0]
KeyError: 'data'

app.py如下

# other imports
from urllib import parse_qs

def encode_payload(payload):
    '''encodes generic payload'''
    return base64.b64encode(pickle.dumps(payload)).decode('utf-8')

def decode_payload(payload):
    '''decodes generic payload'''
    return pickle.loads(base64.b64decode(payload))

app = Chalice(app_name='markthis-api')

@app.route('/questions', methods=['GET'], content_types=['application/json'])
def questions():
    style = app.current_request.query_params['style']
    body = app.current_request.raw_body.decode()

    payload = parse_qs(body)['data'][0]
    img = decode_payload(payload)

    stuff = find_questions(img, style)

    return {'pickle': encode_payload(stuff)}

測試.py

def api_request(img, style):
    url = f'https://api-code-etc.execute-api.eu-west-2.amazonaws.com/api/questions?style={style}'
    #url = f'http://localhost:8000/questions?style={style}'

    headers = {'Content-Type': 'application/json'}
    payload = {'data': encode_payload(img)}

    return requests.get(url, data=payload, headers=headers)

我是 AWS 和 Chalice 的新手,不知道是什么導致了這個問題。 API 有一個返回{'hello': 'world'}另一個端點 '/'。 這在部署時工作正常。

非常感謝任何幫助

當 Content-Type 是“application-json”時,首選方法是使用.json_body 代替;

body = app.current_request.raw_body.decode()

這樣做可能會解決問題:

body = app.current_request.json_body

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM