当前位置: 首页 > 知识库问答 >
问题:

没有从Textract接收到亚马逊SNS的消息

应子真
2023-03-14

我正在使用Amazon Textract的StartDocumentAnalysis函数异步扫描文件。S3存储桶中的pdf文件。正如文档所说,我应该会收到一份关于工作状态的通知,发送到提供的SNS主题。

返回用于获取操作结果的作业标识符(JobId)。当文本分析完成后,亚马逊文本将完成状态发布到您在NotificationChannel中指定的亚马逊简单通知服务(Amazon SNS)主题。

我用来开始分析的代码如下:

    fun analyzeDocument(documentId: String) {
        klogger.info { "Start Textract analysis on document '$documentId'" }

        val request = StartDocumentAnalysisRequest()
            .withFeatureTypes("TABLES", "FORMS")
            .withDocumentLocation(DocumentLocation()
                .withS3Object(S3Object()
                    .withName(documentId)
                    .withBucket(bucketName)
                )
            )
            .withNotificationChannel(NotificationChannel()
                .withSNSTopicArn(snsTopicArn)
                .withRoleArn(snsRoleArn)
            )

        val jobId = textract.startDocumentAnalysis(request).jobId

        klogger.info { "Analysis started for document '$documentId'. Job ID: '$jobId'" }
    }

我在AWS控制台中创建了SNS。

  • snsTopicArn=arn:aws:sns:us-east-1:093475263507:textract结果。先进先出
  • snsRoleArn=arn:aws:iam::093475263507:role/snssccessfeedback

我可以从控制台手动向该SNS发布消息,但Textract的任何消息都不会进入SNS主题。我已经等了好几个小时了——我想现在我应该已经收到消息了。

我不确定snsRoleArn是否正确。我只是随便用了一个AWS里已经有的。这可能是个问题吗?我应该使用哪个snsRoleArn?如果不是这样,为什么我没有收到消息?

我可能在访问策略中遗漏了什么吗?

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:GetTopicAttributes",
        "SNS:SetTopicAttributes",
        "SNS:AddPermission",
        "SNS:RemovePermission",
        "SNS:DeleteTopic",
        "SNS:Subscribe",
        "SNS:ListSubscriptionsByTopic",
        "SNS:Publish",
        "SNS:Receive"
      ],
      "Resource": "arn:aws:sns:us-east-1:093475263507:textract-result.fifo",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": "093475263507"
        }
      }
    }
  ]
}

共有2个答案

汪泓
2023-03-14

面对同样的问题,从FIFO SNS到标准SNS为我工作。不确定是否是强制性的. ffo命名约定导致了这种行为。会更新,一旦我得到适当的支持从AWS。

从您的配置中,我可以看出您没有使用正确的命名约定来创建一个由Textract通知的SNS。对于TextExtract,SNS应该以AmazonExtract*开头。确保你总是用AmazonTextract为你的sns做准备。

高钱青
2023-03-14

为特定任务使用随机IAM角色不是最佳实践。对于这个用例,您应该使用一个附加了SNS策略的IAM角色。我会尝试使用这样的东西:

 类似资料:
  • 我们正在开发一个系统,我们需要向数千部手机发送推送通知。我们使用Amazon SNS进行了设置。我们将向每部手机发送单独的消息,因此我们直接发送到SNSendpointARN,而不是主题ARN。 我们目前正在想这个系统的性能。我在网上找不到任何关于可以向SNS发送多少消息的内容。例如,如果我需要向25000个SNSendpoint发送25000条消息,我可以以多快的速度发送它们?秒、分钟、小时?

  • 我对amazon sns有奇怪的问题。我正在使用amazon aws的nodejs sdk向android设备发送推送通知。问题是当我将消息发送到亚马逊服务器时,它会返回一个MessageID,但消息没有传递。 这是亚马逊发布的代码: 如果我使用亚马逊控制台发布通知工作完美。此外,如果我从gcmMessage中删除JSON.stringify,它正在发送push通知,但没有gcm数据。

  • 我的Android应用程序中有一个与亚马逊SNS服务相关的问题。我正在使用亚马逊SNS推送服务。请查看此链接http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html有关亚马逊SNS服务的更多详细信息,请参阅。 我像在Amazon samples http://docs . AWS . Amazon . com/SNS/latest/DG

  • 我能够从EC2实例连接到VPC中的ElastiCache Redis实例。但我想知道是否有办法连接到Amazon EC2实例之外的ElastiCache Redis节点,例如从我的本地开发设置或其他供应商提供的VPS实例。 当前在我的本地设置中尝试时: 我只在一段时间后才会暂停。

  • 我正在尝试通过php向Android应用程序发送推送通知。我设置了亚马逊SNS帐户,并使用谷歌服务器密钥为GCM API创建了SNS平台。 使用 AWS 凭证,我编写了一个 cron,它从数据库读取通知消息,并使用 Amazon php api 发布到 sns 服务。我正在以 cron 获取 Amazon 终端节点,并在其上发布通知。 我收到的状态是通行证和通知请求。但设备上没有收到实际通知。 我

  • 我已经在我的服务器上配置了postfix,只发送@gmail。com邮件至亚马逊SES: 此外,我在AmazonSES控制台中配置了使用AmazonSNS接收邮件的反弹和投诉。问题是,如果我向一个不存在的gmail地址发送邮件,我不会收到回音。 如果从邮件发送邮件。谷歌。com到地址dsadaerwer。拉拉乐队很烂。贾斯汀是一个-beaver@gmail.com我收到: 但是如果从PHP脚本发送