Amazon Textract异步OCR任务无法触发SNS通知问题求助
解决Amazon Textract异步任务无SNS通知问题
先修正输入参数的语法错误
你的输入参数中FeatureTypes的写法存在问题:
FeatureTypes: [ // FeatureTypes // required "TABLES" || "FORMS", ],
在JavaScript中,"TABLES" || "FORMS"会被解析为单个值"TABLES"(逻辑或返回第一个真值)。若需同时启用表格和表单识别,应改为:
FeatureTypes: ["TABLES", "FORMS"],
若仅需其中一种,直接写单个值即可。虽然这不一定直接导致SNS通知失败,但参数异常可能引发任务执行问题,需先修正。
关键排查步骤
1. 验证SNS主题的权限策略
除了服务角色的信任策略,SNS主题本身必须允许Textract发布消息。给目标SNS主题添加以下权限策略(替换为你的账号和主题ARN):
{ "Version": "2008-10-17", "Id": "TextractPublishPolicy", "Statement": [ { "Sid": "AllowTextractToPublish", "Effect": "Allow", "Principal": { "Service": "textract.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:ap-southeast-1:123456789012:AmazonTextractTopic" } ] }
这是最容易被忽略的配置项,仅配置服务角色信任策略不足以让Textract向SNS发送消息。
2. 检查服务角色的权限
确保AmazonTextractServiceRole角色拥有向目标SNS主题发布消息的权限,添加如下权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:ap-southeast-1:123456789012:AmazonTextractTopic" } ] }
3. 查看CloudTrail日志
通过CloudTrail搜索事件名称为Publish、资源为你的SNS主题ARN的事件,检查是否存在AccessDenied错误,这能直接定位权限类问题。
4. 确认SNS订阅状态
检查SNS主题的订阅端点(邮箱、Lambda等)是否已完成订阅确认,未确认的订阅无法接收消息。在SNS控制台查看订阅状态是否为Confirmed。
5. 验证区域一致性
确保Textract任务执行区域与SNS主题所在区域一致(均为ap-southeast-1),跨区域配置易引发权限或网络问题,优先确认同区域部署。
6. 测试SNS主题可用性
手动向SNS主题发布测试消息,确认订阅者能正常接收,排除SNS主题本身或订阅端的故障。
内容的提问来源于stack exchange,提问作者zeagord
相关产品推荐
相关产品推荐

