如何解决lambda函数中的“语法错误”,但选项卡正确并且可以在测试用例中使用?
我有一个lambda函数,该函数用于通过react Webapp抓取用户上传的文件,将其提交到s3存储桶,然后使用python的lambda函数从存储桶中抓取所述图像,将其翻译并提交翻译后的图像该文件的版本重新存储到存储桶中。
问题是,该程序仅在测试用例上/理论上起作用。推断一下,我将文件名作为lambda函数的“事件”输入,并将其携带到其他各种函数中,例如:
def get_kv_map(event):
filePath = event
fileExt = filePath.get('body')
s3 = boto3.resource('s3')
bucket = s3.Bucket('myBucket')
obj = bucket.Object(bucket)
client = boto3.client('textract') #We utilize boto3's textract
response = client.analyze_document(Document={'S3Object': {'Bucket': 'myBucket','Name': fileExt}},FeatureTypes=['FORMS'])
# Get the text blocks
blocks=response['Blocks'] #We make a blocks variable that will be the blocks we find in the document
# get key and value maps
key_map = {}
value_map = {}
block_map = {}
for block in blocks: #Traverse the blocks found in the document
block_id = block['Id'] #Set variable for blockId to the Id's found on that block location
block_map[block_id] = block #Make the block map at that ID be the block variable
if block['BlockType'] == "KEY_VALUE_SET": #if we see that the type of block we're on is a key and value set pair,we check if it's a key or not. If it's not a key,we know it's a value. We send it to the respective map.
if 'KEY' in block['EntityTypes']:
key_map[block_id] = block
else:
value_map[block_id] = block
return key_map,value_map,block_map #######LINE WITH ERROR ######
为什么这一行会引起错误,更重要的是,为什么只在网站上发生该行?当我在我的测试用例中使用cloud9中的程序时,一切都很好。但是,当我尝试让网站提交该功能的数据以“完成其工作”时,似乎它在上载文件并进入所有行之后就停止了。我试过检查选项卡/空格和所有内容。我很困惑。
谢谢您的帮助,我今天一直在拔头发。
因此,我试图分析我带来的(事件)及其包含的内容。看来这是一个权限错误,但我不明白为什么。我为自己提供了对AWS中各种功能的完全访问权限。下面是我在使用测试用例时看到的错误代码。
"errorType": "InvalidS3ObjectException","errorMessage": "An error occurred (InvalidS3ObjectException) when calling the AnalyzeDocument operation: Unable to get object metadata from S3. Check object key,region and/or access permissions.","stackTrace": [
" File \"/var/task/scrapeShow/lambda_function.py\",line 133,in main\n key_map,block_map = get_kv_map(event) #Take map variables in to get the key and value map we need.\n"," File \"/var/task/scrapeShow/lambda_function.py\",line 39,in get_kv_map\n response = client.analyze_document(Document={'S3Object': {'Bucket': 'myBucket',FeatureTypes=['FORMS'])\n"," File \"/var/runtime/botocore/client.py\",line 316,in _api_call\n return self._make_api_call(operation_name,kwargs)\n",line 626,in _make_api_call\n raise error_class(parsed_response,operation_name)\n"
]}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。