通过python / curl将AWS lambda上传文件发送到API不会识别tmp文件

时间:2017-10-23 06:40:03

标签: python amazon-web-services lambda

有人可以解释为什么我的python代码无法将文件上传到api

logger.info("is videofilethere : {} \n".format(os.path.isfile('/tmp/' + videoFileName + '.mp4')))

  

[INFO] 2017-10-23T05:59:26.274Z 52e8b51d-b7b7-11e7-b687-450a720c44f3是   videofilethere:真的

[ERROR] 2017-10-23T05:59:26.278Z 52e8b51d-b7b7-11e7-b687-450a720c44f3 [Errno 2]

  

没有这样的文件或目录

result = subprocess.call("curl -X POST \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header Authorization: Bearer sometoken \
-F asset='{ \"folderId\": \"12345\", \
\"name\": \"blH\", \
\"description\": \"Cool new Asset!\", \
\"text\": \"Text body.\", \
\"EntityType\": \"Asset\"}' \
;type=application/json' \
-F video=@/tmp/somefile.mp4 \
-F videoSize=7689755} \
\"https://api.blahblah/12345/asset?multipart\" \
")
return result

1 个答案:

答案 0 :(得分:1)

这与您的/tmp/somefile.mp4无关。

subprocess.call找不到curl。您应该在shell=True中使用call。这是一个简化的例子:

def lambda_handler(event, context):
    import subprocess
    result = subprocess.call("curl -I http://google.com", shell=True)
    return result