0

Amazon TextractStartDocumentAnalysis関数を使用して、S3 バケットから .pdf ファイルを非同期的にスキャンしています。ドキュメントにあるように、提供された SNS トピックへのジョブ ステータスに関する通知を受け取る必要があります。

StartDocumentAnalysisJobId操作の結果を取得するために使用するジョブ識別子 ( ) を返します。テキスト分析が完了すると、Amazon Textract は で指定した Amazon Simple Notification Service (Amazon SNS) トピックに完了ステータスを発行しますNotificationChannel

分析を開始するために使用しているコードは次のようになります。

    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-result.fifo
  • snsRoleArn = arn:aws:iam::093475263507:role/SNSSuccessFeedback

コンソールからその 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"
        }
      }
    }
  ]
}
4

2 に答える 2

0

同じ問題に直面し、fifo SNS から標準 SNS に変更するとうまくいきました。必須の .fifo 命名規則がこの動作を引き起こしているかどうかは不明です。aws から適切なサポートが得られたら更新します。

あなたの構成から、Textract によって通知される SNS を作成するための適切な命名規則を使用していないことがわかります。テキストの場合、SNS は AmazonTexttract* で始まる必要があります。必ず、sns の前に AmazonTexttract を追加してください。

于 2021-12-08T10:53:11.413 に答える