Amazon Transcribeを利用する時のIAMポリシーについて Part2

記事タイトルとURLをコピーする

Amazon Transcribeを利用する時のIAMポリシーについて Part1では、IAMポリシーで設定できるアクションは3つと述べましたが、Amazon Transcribeの機能を考えるとアクションが3つしかないはずがありません。

Amazon Transcribeのアクション

APIリファレンスを見てみると、Amazon Transcribeのアクションは全部で8つ。前回の3つに加えて、

  • CreateVocabulary
  • DeleteVocabulary
  • GetVocabulary
  • ListVocabularies
  • UpdateVocabulary

があります。

Vocabulary(カスタム語彙)とは

今回はあまり詳しくは紹介しませんが、Amazon TranscribeではVocabulary(カスタム語彙)を登録することで、文字起こしの精度を高めることができます。テキストファイルやCSVに語句を入力しておき、Amazon Transcribeへアップロードします。ユーズケースとしては、業界用語や製品名など一般的な語句ではない文字起こしをする、というよなことが考えられます。今回はカスタム語彙に関する操作を許可する権限について説明します。

IAMポリシーをつくってみる

ビジュアルエディターではカスタム語彙のアクションが見あたらないので、JSONで書いてみることに。


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "transcribe:CreateVocabulary",
                "transcribe:GetVocabulary",
                "transcribe:ListVocabularies",
                "transcribe:UpdateVocabulary",
                "transcribe:DeleteVocabulary"
            ],
            "Resource": "*"
        }
    ]
}

すると... 「識別されないアクション」だと...

ひょっとして権限いらない?

ひょっとするとカスタム語彙を操作するのに何も権限がいらないとか...

そんなことはありませんでした。 not authorized to perform: transcribe:ListVocabularies

では、どうするか?

AWS管理のポリシーにAmazonTranscribeFullAccessとうのがあったのでそれを使うことに。 中身は↓な感じ。Amazon TranscribeのすべてのアクションとS3のGetObjectが許可されています。


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "transcribe:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::*transcribe*"
            ]
        }
    ]
}

すると... うん、見えました。

カスタム語彙へのアクションの許可

どうやら、カスタム語彙へのアクションのみを許可することはできない仕様のようです。まあ、だからと言って困ることはないと思います。AmazonTranscribeReadOnlyAccessというポリシーもあり、そちらを確認すると...


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "transcribe:Get*",
                "transcribe:List*"
            ],
            "Resource": "*"
        }
    ]
}

このようにGetListでジョブとカスタム語彙の読み込み両方が許可されています。カスタム語彙へのアクションの中でも、GetVocabularyを許可したい、ListVocabulariesを許可したいという場合はこれでOKです。もちろんこれだと、GetTranscriptionJob/ListTranscriptionJobsも同時に許可されます。CreateVocabulary・DeleteVocabulary・UpdateVocabularyを許可したい場合はAmazonTranscribeFullAccessのようにAmazon Transcribeの全てのアクションを許可する必要があります。 IAMポリシーでは、カスタム語彙へのアクションの許可を細かくは管理できず、カスタム語彙へのアクションを許可しようとすると、ジョブへのアクションも許可するということです。

つづく...

Amazon Transcribeを利用する時のIAMポリシーについて Part3