【发布时间】:2021-02-09 15:34:08
【问题描述】:
您好,我正在用 Java 开发一个使用 AWS Textract 解析文档的应用程序。对于多页解析,我使用 textract 客户端上可用的 startDocumentAnalysis 方法。然后,该客户端以一个 jobId 进行响应,并且 jobId 连同它的完成状态一起被放置在 sqs 队列中。我以前有一个个人帐户并设法让所有这些都正常工作,因此一个进程从队列中读取消息,然后使用以下方法获取解析结果:
GetDocumentAnalysisRequest documentAnalysisRequest = GetDocumentAnalysisRequest.builder().jobId(jobId)
.maxResults(maxResults).nextToken(paginationToken).build();
现在我必须在我公司的 AWS 帐户上执行此操作,并且我已经回溯了我的步骤并且一切正常,除了现在当我从队列中提取消息时,所有消息都以 [] 形式返回,即空数组。 我使用此代码:
messages = sqsClient.receiveMessage(receiveMessageRequest).messages();
所以我知道错误不能出现在 java 代码中,因为它以前有效。 我也知道我可以上传到新存储桶并进行单页解析,所以我知道我的凭据是正确的。 我在 sns 上创建了一个主题并将我的 sqs 注册到它,但是这里的某个地方必须有权限或其他配置错误。可能 SNS 和 SQS 没有互相交流?
想知道是否有人有任何可以帮助我的见解。 谢谢
【问题讨论】:
-
您使用的新 IAM 角色是否有使用 SQS 的策略?你是对的 - 如果你的 Java 与其他帐户一起工作 - 你的 Java 逻辑不是问题。
-
我从具有以下权限的 I AM 用户开始:AmazonTextractFullAccess AmazonS3ReadOnlyAccess AmazonSNSFullAccess AmazonSQSFullAccess 但无法上传到存储桶,所以现在我尝试使用具有管理员角色的 IAM 用户,但我现在要回去了到第一个角色,如果有这样的事情,想办法添加 S3 读写。
-
好的,我使用第一个帐户进行了测试,但我无法像以前那样上传到存储桶,所以我将用户添加到管理员组以及上面的组,我又回到了所有消息的场景是空的。听起来 sns 和 sqs 没有互相交流。
-
想通了。文档中的所有内容都在这一点上。在名称前加上 AmazonTextraxt! “创建一个 Amazon SNS 主题。在主题名称前加上 AmazonTextract。记下主题 Amazon 资源名称 (ARN)。确保该主题与您使用的 AWS 终端节点位于同一区域。”
标签: amazon-web-services amazon-textract