Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 为什么我会得到;datetime.datetime“;使用lambda时出错?_Amazon Web Services_Amazon S3_Aws Lambda - Fatal编程技术网

Amazon web services 为什么我会得到;datetime.datetime“;使用lambda时出错?

Amazon web services 为什么我会得到;datetime.datetime“;使用lambda时出错?,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,我目前正在使用AWS Lambda编写此脚本: import boto3 import json s3 = boto3.client("s3") def lambda_handler(event, context): bucket = "www.onlinecodecompiler.com" key = "aws_cli_bucket.txt" try: data = s3.get_

我目前正在使用AWS Lambda编写此脚本:

import boto3
import json

s3 = boto3.client("s3")

def lambda_handler(event, context):
    bucket = "www.onlinecodecompiler.com"
    key = "aws_cli_bucket.txt"
    
    try:
        data = s3.get_object(Bucket=bucket, Key=key)
        json_data = data["Body"].read()
        return{
            "response_code ": 200,
            "data": data
        }
    except Exception as e:
        print(e)
        raise(e)
txt文件“aws_cli_bucket.txt”中有以下语句,“列出bucket中的所有对象aws s3 ls s3://bucket name”。这只是一个随机的文本,因为我只是在测试lambda是否可以从我的S3存储桶中读取文本文件,但为什么我会收到一个错误声明

datetime.datetime(2021, 3, 22, 19, 50, 48, tzinfo=tzutc()) is not JSON serializable
我在网上搜索,大多数人都会遇到这个错误,因为他们的代码与日期和时间有关,而我的代码与日期和时间无关


任何帮助都将不胜感激。

此错误源于您从
s3.get\u对象中得到的响应,该对象包含3个
datetime
对象

{
    'Body': StreamingBody(),
    'DeleteMarker': True|False,
    'AcceptRanges': 'string',
    'Expiration': 'string',
    'Restore': 'string',
    'LastModified': datetime(2015, 1, 1),
    ...
    'Expires': datetime(2015, 1, 1),
    ...
    'ObjectLockRetainUntilDate': datetime(2015, 1, 1),

}

在返回之前,您还必须删除
Body
键,该键包含
StreamingBody()
,否则也会出错

 "errorMessage": "Unable to marshal response: <botocore.response.StreamingBody object at 0x7fa2370625d0> is not JSON serializable",
上面的代码生成以下响应

{
“响应代码”:200,
“数据”:{
“ResponseMetadata”:{
“请求ID”:“980JCEDBG0AWZH”,
“主机ID”:“Oscwxx/5str0NFoWbnP/f5SAS4euhiJPQUXx7uOs205fowd7ICNtU=”,
“HTTPStatusCode”:200,
“HTTPHeaders”:{
“x-amz-id-2”:“Oscwxx/5Xk3uv7LuFUDx7uOs205fowd7ICNtU=”,
“x-amz-request-id”:“980JC0KEDBWZH”,
“日期”:“2021年3月22日星期一20:43:56 GMT”,
“上次修改”:“2021年3月20日星期六17:35:25 GMT”,
“etag”:“d41d8cd98f00b20498ecf8427e\”,
“接受范围”:“字节”,
“内容类型”:“文本/x-python”,
“内容长度”:“0”,
“服务器”:“AmazonS3”
},
“重试尝试”:1
},
“AcceptRanges”:“字节”,
“ContentLength”:0,
“ETag”:“d41d8cd98f00b00998ecf8427e\”,
“ContentType”:“text/x-python”,
“元数据”:{}
}
}

错误源于您从包含3个
datetime
对象的
s3.get\u对象得到的响应

{
    'Body': StreamingBody(),
    'DeleteMarker': True|False,
    'AcceptRanges': 'string',
    'Expiration': 'string',
    'Restore': 'string',
    'LastModified': datetime(2015, 1, 1),
    ...
    'Expires': datetime(2015, 1, 1),
    ...
    'ObjectLockRetainUntilDate': datetime(2015, 1, 1),

}

在返回之前,您还必须删除
Body
键,该键包含
StreamingBody()
,否则也会出错

 "errorMessage": "Unable to marshal response: <botocore.response.StreamingBody object at 0x7fa2370625d0> is not JSON serializable",
上面的代码生成以下响应

{
“响应代码”:200,
“数据”:{
“ResponseMetadata”:{
“请求ID”:“980JCEDBG0AWZH”,
“主机ID”:“Oscwxx/5str0NFoWbnP/f5SAS4euhiJPQUXx7uOs205fowd7ICNtU=”,
“HTTPStatusCode”:200,
“HTTPHeaders”:{
“x-amz-id-2”:“Oscwxx/5Xk3uv7LuFUDx7uOs205fowd7ICNtU=”,
“x-amz-request-id”:“980JC0KEDBWZH”,
“日期”:“2021年3月22日星期一20:43:56 GMT”,
“上次修改”:“2021年3月20日星期六17:35:25 GMT”,
“etag”:“d41d8cd98f00b20498ecf8427e\”,
“接受范围”:“字节”,
“内容类型”:“文本/x-python”,
“内容长度”:“0”,
“服务器”:“AmazonS3”
},
“重试尝试”:1
},
“AcceptRanges”:“字节”,
“ContentLength”:0,
“ETag”:“d41d8cd98f00b00998ecf8427e\”,
“ContentType”:“text/x-python”,
“元数据”:{}
}
}