微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

InvalidS3ObjectException:无法从S3获取对象元数据?

如何解决InvalidS3ObjectException:无法从S3获取对象元数据?

因此,我尝试使用Amazon Textract来读取多个pdf文件,并使用StartDocumentTextDetection方法来读取多个页面,如下所示:

client = boto3.client('textract')
textract_bucket = s3.Bucket('my_textract_console-us-east-2')

for s3_file in textract_bucket.objects.all():
    print(s3_file)

    response = client.start_document_text_detection(
        DocumentLocation = {
                "S3Object": {
                    "Bucket": "my_textract_console_us-east-2","Name": s3_file.key,} 
        },ClientRequestToken=str(random.randint(1,1e10)))
    print(response)
    break
     

当仅尝试从s3检索响应对象时,我可以看到它的打印输出为:

s3.ObjectSummary(bucket_name='my_textract_console-us-east-2',key='C:\\Users\\My_User\\Documents\\Folder\\Sub_Folder\\Sub_sub_folder\\filename.PDF')

相应地,我正在使用那个s3_file.key来稍后访问该对象。但是我遇到了我无法弄清的以下错误

InvalidS3ObjectException:调用StartDocumentTextDetection操作时发生错误(InvalidS3ObjectException):无法从S3获取对象元数据。检查对象密钥,区域和/或访问权限。

到目前为止,我有

  1. 从boto3会话中检查了该区域,存储桶和AWS配置都设置为us-east-2
  2. 键不能错,我直接从对象响应中传递了
  3. 出于明智的考虑,我检查了IAM控制台,并将其设置为AmazonS3FullAccessAmazonTextractFullAccess

这里可能出什么问题了?

[EDIT] 我确实重命名文件,以使它们没有\\,但似乎仍然无法正常工作,很奇怪。

解决方法

我遇到了同样的问题,并在提取客户端中指定了一个区域来解决它。就我而言,我使用了us-east2

client = boto3.client('textract',region_name='us-east-2')

这样做的线索来自这个问题:https://github.com/aws/aws-sdk-js/issues/2714

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。