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

oce*_*800 6 python amazon-s3 amazon-web-services boto3 amazon-textract

因此,我尝试使用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
     
Run Code Online (Sandbox Code Playgroud)

当只是尝试从 检索响应对象时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')
Run Code Online (Sandbox Code Playgroud)

相应地,我s3_file.key稍后将使用它来访问该对象。但我收到以下我无法弄清楚的错误:

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

到目前为止我有:

  1. 从 boto3 会话检查了区域,存储桶和 aws 配置设置均设置为us-east-2。
  2. 密钥不能错,我直接从对象响应传递它
  3. 在权限方面,我检查了 IAM 控制台,并将其设置为AmazonS3FullAccess和AmazonTextractFullAccess。

这里可能出了什么问题?

[编辑]我确实重命名了这些文件,以便它们没有\\,但似乎仍然无法正常工作,这很奇怪..

Lui*_*lva 5

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

client = boto3.client('textract', region_name='us-east-2')
Run Code Online (Sandbox Code Playgroud)

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