Nik*_*ntz 1 python-3.x aws-lambda
我想读取 http post 请求的“key”参数,但它不起作用。
def my_handler(event, context):
print(event)
print(event['body'])
print("key: " + event['key'])
key = event['query']['key']
encoded_string = str(key).encode("utf-8")
# Create the file named for example "42.json" containing the appropriate data
s3_path = str(key) + '.json'
s3 = boto3.resource("s3")
s3.Bucket(BUCKET_NAME).put_object(Key=s3_path, Body=encoded_string)
message = {
'message': 'Created {}!'.format(key)
}
return {
'statusCode': 200,
'headers': {'Content-Type': 'application/json'},
'body': json.dumps(message)
}
Run Code Online (Sandbox Code Playgroud)
更新:如果我使用下面的代码,我可以在 http 帖子中读取 JSON 数据,但我仍然无法读取表单数据。
def my_handler(event, context):
print(event)
print(event['body'])
# print("key: " + event['key'])
print("key " + json.loads(event['body'])["key"])
key = json.loads(event['body'])["key"]
encoded_string = str(key).encode("utf-8")
# Create the file named for example "42.json" containing the appropriate data
s3_path = str(key) + '.json'
s3 = boto3.resource("s3")
s3.Bucket(BUCKET_NAME).put_object(Key=s3_path, Body=encoded_string)
message = {
'message': 'Created {}!'.format(key)
}
return {
'statusCode': 200,
'headers': {'Content-Type': 'application/json'},
'body': json.dumps(message)
}
Run Code Online (Sandbox Code Playgroud)
我也遇到了这个问题。我专门使用 python3.7 在 AWS Lambda 上工作。花了一天,但我想通了。
此代码将“multipart/form-data”主体解析为名为form_data. 有两个注意事项: (a) 此代码假设帖子正文和标题是 utf-8 编码的;这似乎是 AWS API Gateway 特有的,但我没有做任何尽职调查来测试这是否适用于所有情况。(b) 因为表单的任何字段都可以有多个值,所以任何键的值都是一个列表。您问的是从表单数据中检索“密钥”。如果“key”只有一个值,那么您将引用form_data['key'][0].
import cgi
import io
def handler(event, context):
print(event)
print(event['body'])
fp = io.BytesIO(event['body'].encode('utf-8'))
pdict = cgi.parse_header(event['headers']['Content-Type'])[1]
if 'boundary' in pdict:
pdict['boundary'] = pdict['boundary'].encode('utf-8')
pdict['CONTENT-LENGTH'] = len(event['body'])
form_data = cgi.parse_multipart(fp, pdict)
print('form_data=', form_data)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2718 次 |
| 最近记录: |