&引用;解析器必须是字符串或字符流,而不是datetime“;lambda aws函数中出错-can';我想不出怎么修理它
在尝试保存/测试这个Lambda Boto3函数时,我遇到了一个非常恼人的错误。关于这个问题,这里还有其他的线程,但是我花了大约2个小时来调试它,无法找出我做错了什么(这可能是显而易见的)。任何帮助都将不胜感激&引用;解析器必须是字符串或字符流,而不是datetime“;lambda aws函数中出错-can';我想不出怎么修理它,datetime,aws-lambda,boto3,launch-time,Datetime,Aws Lambda,Boto3,Launch Time,在尝试保存/测试这个Lambda Boto3函数时,我遇到了一个非常恼人的错误。关于这个问题,这里还有其他的线程,但是我花了大约2个小时来调试它,无法找出我做错了什么(这可能是显而易见的)。任何帮助都将不胜感激 { "errorMessage": "Parser must be a string or character stream, not datetime", "errorType": "TypeError", "stackTrace": [ " File \"/va
{
"errorMessage": "Parser must be a string or character stream, not datetime",
"errorType": "TypeError",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 35, in lambda_handler\n a = dateutil.parser.parse(instance.launch_time)\n",
" File \"/var/runtime/dateutil/parser/_parser.py\", line 1358, in parse\n return DEFAULTPARSER.parse(timestr, **kwargs)\n",
" File \"/var/runtime/dateutil/parser/_parser.py\", line 646, in parse\n res, skipped_tokens = self._parse(timestr, **kwargs)\n",
" File \"/var/runtime/dateutil/parser/_parser.py\", line 722, in _parse\n l = _timelex.split(timestr) # Splits the timestr into tokens\n",
" File \"/var/runtime/dateutil/parser/_parser.py\", line 207, in split\n return list(cls(s))\n",
" File \"/var/runtime/dateutil/parser/_parser.py\", line 76, in __init__\n '{itype}'.format(itype=instream.__class__.__name__))\n"
]
}
启动时间
属性已经是datetime属性。您不需要解析它
参考:
Instance.launch\u时间?可能已经是datetime?没错,instance.launcy\u time已经是datetime格式<代码>打印(类型(实例.启动时间))
import json
import boto3
import time
import datetime
import dateutil
from dateutil.parser import parse
def lambda_handler(event, context):
detailDict = event["detail"]
ec2 = boto3.resource('ec2')
instanceId = str(detailDict["instance-id"])
instance = ec2.Instance(instanceId)
instanceState = instance.state
a = dateutil.parser.parse(instance.launch_time)
b = current_time = datetime.datetime.now(launch_time.tzinfo)
# returns a timedelta object
c = a-b
print('Difference: ', c)
minutes = c.seconds / 60
print('Difference in minutes: ', minutes)
Message=str(instanceId)+" is "+str(instanceState["Name"])
return {
'statusCode': 200,
'body': Message
}