使用Amazon Textract StartDocumentAnalysis异步分析文档未收到SNS通知排查
Textract 异步任务收不到SNS通知的排查方案
最核心的根因:你选的IAM角色根本不对
你现在填的arn:aws:iam::093475263507:role/SNSSuccessFeedback是AWS默认给SNS配套的、用来收集消息投递成功/失败回调指标的角色,从设计上就不是给Textract做通知投递用的。
Textract在NotificationChannel参数里要求的角色,本质是让Textract服务自己代入身份,替你往指定SNS主题发消息的授权,这个角色必须同时满足两个要求,少一个都发不出去:
- 角色的信任策略里必须把
textract.amazonaws.com加进允许代入的服务主体列表,否则Textract根本拿不到这个角色的临时凭证 - 角色的权限策略必须明确允许对目标SNS主题执行
sns:Publish操作
你之前选的那个角色,别说给Textract开跨服务信任了,权限里大概率连对应SNS主题的发布权限都没有,从根上整个投递链路就走不通。
其他容易踩的配置坑
就算你把角色配对了,你现在的现有配置还有几个问题会挡住消息投递:
- 你建的是FIFO类型的SNS主题,要确认Textract推送的消息是否符合FIFO主题的消息组ID、去重规则要求——如果Textract发的消息没带匹配的
MessageGroupId,会被FIFO主题直接拒收 - 你现在用的是SNS默认的访问策略,只校验了
SourceOwner属于你的账号,没有单独给Textract服务开发布权限,部分场景下跨服务调用会被主题策略拦截,消息根本打不进去 - 别干等SNS通知,直接用你启动任务时返回的
JobId,调用Textract的GetDocumentAnalysis接口拉一次任务状态:如果任务已经是完成/失败状态,说明任务本身跑完了只是SNS链路断了;如果任务挂了几个小时还是IN_PROGRESS,说明任务本身就没正常执行,和SNS配置对不对没关系
快速落地修复步骤
- 建一个专用的IAM角色,信任主体选
textract.amazonaws.com,给这个角色绑定对应SNS主题的sns:Publish权限,把得到的角色ARN填到NotificationChannel的RoleArn参数里 - 给SNS主题单独加一条访问策略声明:允许Textract的服务主体对这个主题执行
sns:Publish操作,别只靠默认的Owner校验兜着 - 用新的配置重新发起一次测试任务,同时去SNS控制台的主题投递指标页看有没有投递失败记录,直接定位具体报错原因
内容的提问来源于stack exchange,提问作者Whizzil
相关产品推荐
相关产品推荐

