【发布时间】:2021-05-14 16:13:39
【问题描述】:
我是 Python 新手,我正在编写一个 AWS lambda,它将文件从一个存储桶复制到另一个存储桶。我正在使用 Boto3 库,并且在文档中遇到了以下内容:
当 Amazon S3 收到复制请求或在 Amazon S3 复制文件时,复制请求可能会返回错误。如果错误在复制操作开始之前发生,您会收到标准的 Amazon S3 错误。如果在复制操作期间发生错误,则错误响应嵌入到 200 OK 响应中。这意味着 200 OK 响应可以包含成功或错误。设计您的应用程序以解析响应的内容并适当地处理它。 如果复制成功,您会收到包含所复制对象信息的响应。
成功的响应如下所示(潜在的敏感数据替换为“...”):
Response : {'ResponseMetadata': {'RequestId': 'ID....', 'HostId': 'ID...', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amz-id-2': '...', 'x-amz-request-id': '...', 'date': 'Wed,
10 Feb 2021 21: 48: 48 GMT', 'content-type': 'application/xml', 'content-length': '234', 'server': 'AmazonS3'
}, 'RetryAttempts': 0
}, 'CopyObjectResult': {'ETag': '"..."', 'LastModified': datetime.datetime(2021,
2,
10,
21,
48,
48, tzinfo=tzlocal())
}
}
我想知道如何解析 200 响应以检查错误。文档说,如果复制成功,那么您将收到包含有关复制对象信息的响应。我猜这是 CopyObjectResult 部分?
我正在访问响应:
response = s3_client.copy_object(CopySource=copy_source_object, Bucket=destination_bucket_name, Key=destination_key_prefix+file_key_name)
我现在想写一条语句,说明如果对象复制成功,然后从源存储桶中删除该对象。我需要检查响应不仅是 200 响应,而且它还没有包含嵌入的错误。我找不到包含错误的示例 200 响应,以确保我已正确编写它,因此我向可信赖的 SO 社区寻求帮助。
提前致谢。
【问题讨论】:
标签: python amazon-web-services amazon-s3 aws-lambda boto3