gpt4 book ai didi

python - 如何解析复制对象请求的 Boto3 200 响应

转载 作者:行者123 更新时间:2023-12-04 02:28:00 25 4
gpt4 key购买 nike

我是 Python 新手,我正在编写一个 AWS lambda,它将文件从一个存储桶复制到另一个存储桶。我正在使用 Boto3 库,并且在文档中遇到了以下内容:

A copy request might return an error when Amazon S3 receives the copy request or while Amazon S3 is copying the files. If the error occurs before the copy operation starts, you receive a standard Amazon S3 error. If the error occurs during the copy operation, the error response is embedded in the 200 OK response. This means that a 200 OK response can contain either a success or an error. Design your application to parse the contents of the response and handle it appropriately.If the copy is successful, you receive a response with information about the copied object.


成功的响应如下所示(潜在敏感数据替换为“...”):
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 社区寻求帮助。
提前致谢。

最佳答案

我认为这里的文档可能具有误导性——它们描述的是较低级别的 Amazon API,而不是较高级别的面向客户端的库的行为 boto3 .
您不需要解析它并检查错误,boto3/botocore它本身已经解析了结果。如果该方法返回一个值,嵌入的 CopyObjectResult dict 和 ETag,则没有错误。如果发生错误,客户端库将引发异常。
如果你想处理错误的可能性,那么它是 try/except围绕您需要的 API 调用进行构建。
我的推理是基于查看源代码,这里注册了一个后处理钩子(Hook):
https://github.com/boto/botocore/blob/1.20.5/botocore/handlers.py#L964-L967
实现在这里:
https://github.com/boto/botocore/blob/1.20.5/botocore/handlers.py#L83-L108
copy_object 的情况下,它会提示 500 错误服务器端故障。

关于python - 如何解析复制对象请求的 Boto3 200 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66145963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com