日期时间无法在CloudWatch API调用中序列化(无法封送响应)

时间:2019-08-30 17:18:07

标签: python json amazon-web-services aws-lambda amazon-cloudwatch

我正在尝试使用python / boto3调用Lambda中的CloudWatch get_metric_data API。根据{{​​3}},StartTimeEndTimes应该是我正在使用的日期时间类型。我对如何设置StartTimeEndTime字段的格式感到困惑。

我尝试使用int / string时间戳,还使用json.dumps(datetime(2019, 8, 29), default=str)datetime(2019, 8, 29).isoformat()转换日期时间

Lambda代码

import json
import boto3
from datetime import datetime 

def lambda_handler(event, context):
    client = boto3.client('cloudwatch', region_name = 'us-east-1')
    metricData = client.get_metric_data(
        MetricDataQueries=[
            {
            'Id': 'numberOfCalls',
            'MetricStat': {
                'Metric': {
                    'Namespace': 'AWS/Connect',
                    'MetricName': 'QueueSize',
                    'Dimensions': [
                        {
                             'Name': 'InstanceId', 
                            'Value': 'a351243b-6844-41b0-97d9-934414342d87'
                        }, 
                        {
                            'Name': 'MetricGroup', 
                            'Value': 'Queue'
                        }, 
                        {
                        'Name': 'QueueName', 
                        'Value': 'MiWorkspace'
                    }
                ]
            },
            'Period': 300,
            'Stat': 'Maximum',
            'Unit': 'Count'
        },
        'Label': 'Retrieves the number of MiWorkspace calls in queue',
        'ReturnData': True
    },
],
StartTime=datetime(2019, 8, 29),
EndTime=datetime(2019, 8, 30),
ScanBy='TimestampAscending'
)
return metricData

错误

  "errorMessage": "Unable to marshal response: datetime.datetime(2019, 8, 29, 0, 0, tzinfo=tzlocal()) is not JSON serializable",
  "errorType": "Runtime.MarshalError"

0 个答案:

没有答案