利用3.1. Transcribe転写ジョブの作成 (handson-cli-transcribe-job-s3)

作業の目的 [why]

Transcribeジョブ名"handson-cli-transcribe-job-s3"を作成します。

完了条件/事前条件 [設計者用情報]

完了条件 [after]

主処理は、以下を満たしたときに成功したものとします。

完了条件1

Transcribe転写ジョブ名"handson-cli-transcribe-job-s3"が存在する。

完了条件2

Transcribe転写ジョブ名"handson-cli-transcribe-job-s3"のステータスが"COMPLETED"である。

事前条件 [before]

主処理の実施は、以下の状態であることを前提とします。

事前条件1

S3バケット名"handson-cli-transcribe-XXXXXXXXXXXX"が存在する。

事前条件2

S3バケット名"handson-cli-transcribe-XXXXXXXXXXXX"に転写対象メディア名"s3://handson-cli-transcribe-XXXXXXXXXXXX/source/handson-cli-transcribe-aws-sample.mp3"が存在する。

事前条件3

Transcribe転写ジョブ名"handson-cli-transcribe-job-s3"が存在しない。

事前条件4

転写先S3バケット"handson-cli-transcribe-XXXXXXXXXXXX"が存在する。

作業対象 [what]

  • Transcribeサービス

標準時間(合計)

8分

パラメータ設定

パラメータ設定の標準時間

2分

作業に必要なモノ・情報 [resource]

作業開始には、以下が全て揃っていることが必要です。

リソース1: Transcribe転写ジョブ名

  • 作成するTranscribe転写ジョブ名です。

  • 今回は"handson-cli-transcribe-job-s3"とします。

リソース2: 言語コード名

  • 利用する言語コードの名称です。

  • 今回は"en-US"とします。

リソース3: 入力フォーマット名

  • 利用する入力フォーマットの名称です。

  • 今回は"mp3"とします。

リソース4: S3バケット名

  • 利用する転写メディアが配置されているS3バケット名です。

  • 今回は"handson-cli-transcribe-XXXXXXXXXXXX"とします。

リソース5: Transcribe転写メディアファイル名

  • 利用する転写メディアが配置されているS3パス名です。

  • 今回は"s3://handson-cli-transcribe-XXXXXXXXXXXX/source/handson-cli-transcribe-aws-sample.mp3"とします。

リソース5: 転送先S3バケット名

  • 作成された転写ファイルが配置されるS3バケット名です。

  • 今回は"handson-cli-transcribe-XXXXXXXXXXXX"とします。

パラメータの指定

作業に必要なパラメータを変数に格納をします。

0.a. リージョンの指定

変数の設定

export AWS_DEFAULT_REGION='us-west-2'

0.b. プロファイルの指定

変数の設定:

export AWS_DEFAULT_PROFILE='handson-cli-transcribe-transcribeMaint-user'

0.1. Transcribe転写ジョブの指定

Transcribe転写ジョブを指定します。

変数の設定:

TRANSCRIBE_TRANSCRIPTION_JOB_NAME='handson-cli-transcribe-job-s3'

0.2. 言語コードの指定

言語コードを指定します。

変数の設定:

TRANSCRIBE_LANGUAGE_CODE='en-US'

0.3. 入力フォーマットの指定

入力フォーマットを指定します。

変数の設定:

TRANSCRIBE_MEDIA_FORMAT='mp3'

0.4. S3バケット名

変数の設定:

S3_BUCKET_PREFIX='handson-cli-transcribe'

コマンド:

AWS_ID=$( \
  aws sts get-caller-identity \
    --query 'Account' \
    --output text \
) \
  && echo ${AWS_ID}

結果(例):

XXXXXXXXXXXX

変数の設定:

S3_BUCKET_NAME="${S3_BUCKET_PREFIX}-${AWS_ID}" \
  && echo ${S3_BUCKET_NAME}

結果(例):

handson-cli-transcribe-XXXXXXXXXXXX

0.5. S3オブジェクトパス名

S3オブジェクトパスを指定します。

変数の設定:

S3_OBJECT_PATH='source'

変数の設定:

S3_OBJECT_NAME='handson-cli-transcribe-aws-sample.mp3'

変数の設定:

URI_S3_OBJECT="s3://${S3_BUCKET_NAME}/${S3_OBJECT_PATH}/${S3_OBJECT_NAME}" \
  && echo ${URI_S3_OBJECT}

結果(例):

s3://handson-cli-transcribe-XXXXXXXXXXXX/source/handson-cli-transcribe-aws-sample.mp3

0.6. 転送先S3バケット名

変数の設定:

S3_BUCKET_DESTINATION_PREFIX='handson-cli-transcribe'

コマンド:

AWS_ID=$( \
  aws sts get-caller-identity \
    --query 'Account' \
    --output text \
) \
  && echo ${AWS_ID}

結果(例):

XXXXXXXXXXXX

変数の設定:

S3_BUCKET_DESTINATION="${S3_BUCKET_DESTINATION_PREFIX}-${AWS_ID}" \
  && echo ${S3_BUCKET_DESTINATION}

結果(例):

handson-cli-transcribe-XXXXXXXXXXXX

パラメータの保存

設定されている変数の保存先となるファイル名を指定します。

変数の設定:

DIR_PARAMETER="${HOME}/tmp/parameter-handson-cli-transcribe"
FILE_PARAMETER="${DIR_PARAMETER}/$(date +%Y-%m-%d)-transcribe-transcription_job-create-expand-s3.env" \
  && echo ${FILE_PARAMETER}

結果(例):

${HOME}/tmp/parameter-handson-cli-transcribe/2019-10-22-transcribe-transcription_job-create-expand-s3.env

各変数に正しいパラメータ値が格納されていることを確認しながら保存します。

変数の確認:

cat << EOF > ${FILE_PARAMETER}

  # 0.a. AWS_DEFAULT_REGION:"us-west-2"
         AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}"
  # 0.b. AWS_DEFAULT_PROFILE:"handson-cli-transcribe-transcribeMaint-user"
         AWS_DEFAULT_PROFILE="${AWS_DEFAULT_PROFILE}"

  # 0.1. TRANSCRIBE_TRANSCRIPTION_JOB_NAME:"handson-cli-transcribe-job-s3"
         TRANSCRIBE_TRANSCRIPTION_JOB_NAME="${TRANSCRIBE_TRANSCRIPTION_JOB_NAME}"
  # 0.2. TRANSCRIBE_LANGUAGE_CODE:"en-US"
         TRANSCRIBE_LANGUAGE_CODE="${TRANSCRIBE_LANGUAGE_CODE}"
  # 0.3. TRANSCRIBE_MEDIA_FORMAT:"mp3"
         TRANSCRIBE_MEDIA_FORMAT="${TRANSCRIBE_MEDIA_FORMAT}"
  # 0.4. S3_BUCKET_NAME:"handson-cli-transcribe-XXXXXXXXXXXX"
         S3_BUCKET_NAME="${S3_BUCKET_NAME}"
  # 0.5. URI_S3_OBJECT:"s3://handson-cli-transcribe-XXXXXXXXXXXX/source/handson-cli-transcribe-aws-sample.mp3"
         URI_S3_OBJECT="${URI_S3_OBJECT}"
  # 0.6. S3_BUCKET_DESTINATION:"handson-cli-transcribe-XXXXXXXXXXXX"
         S3_BUCKET_DESTINATION="${S3_BUCKET_DESTINATION}"

EOF

cat ${FILE_PARAMETER}

下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。

タスクの実施

タスク標準時間

6分

1. 前処理

1.1. 処理対象の状態確認

主処理の実施は、以下の状態であることを前提とします。

前提と異なることが判明した場合、直ちに処理を中止します。

事前条件1: S3バケット名"handson-cli-transcribe-XXXXXXXXXXXX"が存在する。

「S3バケット名"handson-cli-transcribe-XXXXXXXXXXXX"が存在する。」ことを確認します。

コマンド:

aws s3 ls s3://${S3_BUCKET_NAME} > /dev/null 2>&1

コマンド:

echo $?

結果(例):

0

事前条件2: S3バケット名"handson-cli-transcribe-XXXXXXXXXXXX"に転写対象メディア名"s3://handson-cli-transcribe-XXXXXXXXXXXX/source/handson-cli-transcribe-aws-sample.mp3"が存在する。

「S3バケット名"handson-cli-transcribe-XXXXXXXXXXXX"に転写対象メディア名"s3://handson-cli-transcribe-XXXXXXXXXXXX/source/handson-cli-transcribe-aws-sample.mp3"が存在する。」ことを確認します。

コマンド:

aws s3 ls ${URI_S3_OBJECT}

結果(例):

2019-10-22 01:23:45 xxxxxxxx handson-cli-transcribe-aws-sample.mp3

事前条件3: Transcribe転写ジョブ名"handson-cli-transcribe-job-s3"が存在しない。

「Transcribe転写ジョブ名"handson-cli-transcribe-job-s3"が存在しない。」ことを確認します。

コマンド:

aws transcribe list-transcription-jobs \
  --query "TranscriptionJobSummaries[?TranscriptionJobName == \`${TRANSCRIBE_TRANSCRIPTION_JOB_NAME}\`].TranscriptionJobName" \
  --output text

結果(例):

(出力なし)

事前条件4: 転写先S3バケット"handson-cli-transcribe-XXXXXXXXXXXX"が存在する。

「転写先S3バケット"handson-cli-transcribe-XXXXXXXXXXXX"が存在する。」ことを確認します。

コマンド:

aws s3 ls s3://${S3_BUCKET_DESTINATION} > /dev/null 2>&1

コマンド:

echo $?

結果(例):

0

1.2. 主処理に必要な情報の取得

メディア文字列の生成

変数の設定:

STRING_URI_TRANSCRIBE_MEDIA="MediaFileUri=${URI_S3_OBJECT}" \
  && echo ${STRING_URI_TRANSCRIBE_MEDIA}

結果(例):

MediaFileUri=s3://handson-cli-transcribe-XXXXXXXXXXXX/source/handson-cli-transcribe-aws-sample.mp3

2. 主処理

Transcribe転写ジョブの作成

パラメータの確認:

cat << ETX

  # TRANSCRIBE_TRANSCRIPTION_JOB_NAME:"handson-cli-transcribe-job-s3"
    TRANSCRIBE_TRANSCRIPTION_JOB_NAME="${TRANSCRIBE_TRANSCRIPTION_JOB_NAME}"
  # TRANSCRIBE_LANGUAGE_CODE:"en-US"
    TRANSCRIBE_LANGUAGE_CODE="${TRANSCRIBE_LANGUAGE_CODE}"
  # TRANSCRIBE_MEDIA_FORMAT:"mp3"
    TRANSCRIBE_MEDIA_FORMAT="${TRANSCRIBE_MEDIA_FORMAT}"
  # STRING_URI_TRANSCRIBE_MEDIA:"MediaFileUri=s3://handson-cli-transcribe-XXXXXXXXXXXX/source/handson-cli-transcribe-aws-sample.mp3"
    STRING_URI_TRANSCRIBE_MEDIA="${STRING_URI_TRANSCRIBE_MEDIA}"
  # S3_BUCKET_DESTINATION:"handson-cli-transcribe-XXXXXXXXXXXX"
    S3_BUCKET_DESTINATION="${S3_BUCKET_DESTINATION}"

ETX

コマンド:

aws transcribe start-transcription-job \
  --transcription-job-name ${TRANSCRIBE_TRANSCRIPTION_JOB_NAME} \
  --language-code ${TRANSCRIBE_LANGUAGE_CODE} \
  --media-format ${TRANSCRIBE_MEDIA_FORMAT} \
  --media "${STRING_URI_TRANSCRIBE_MEDIA}" \
  --output-bucket-name ${S3_BUCKET_DESTINATION}

結果(例):

{
  "TranscriptionJob": {
    "TranscriptionJobName": "handson-cli-transcribe-job-s3",
    "TranscriptionJobStatus": "IN_PROGRESS",
    "LanguageCode": "en-US",
    "MediaFormat": "mp3",
    "Media": {
        "MediaFileUri": "s3://handson-cli-transcribe-XXXXXXXXXXXX/source/handson-cli-transcribe-aws-sample.mp3"
    },
    "CreationTime": xxxxxxxxxx.xxx
  }
}

3. 後処理

3.1. 完了条件の確認

主処理は、以下を満たしたときに成功したものとします。

完了条件1: Transcribe転写ジョブ名"handson-cli-transcribe-job-s3"が存在する。

「Transcribe転写ジョブ名"handson-cli-transcribe-job-s3"が存在する。」ことを確認します。

コマンド:

aws transcribe list-transcription-jobs \
  --query "TranscriptionJobSummaries[?TranscriptionJobName == \`${TRANSCRIBE_TRANSCRIPTION_JOB_NAME}\`].TranscriptionJobName" \
  --output text

結果(例):

handson-cli-transcribe-job-s3

完了条件2: Transcribe転写ジョブ名"handson-cli-transcribe-job-s3"のステータスが"COMPLETED"である。

「Transcribe転写ジョブ名"handson-cli-transcribe-job-s3"のステータスが"COMPLETED"である。」ことを確認します。

コマンド:

aws transcribe list-transcription-jobs \
  --query "TranscriptionJobSummaries[?TranscriptionJobName == \`${TRANSCRIBE_TRANSCRIPTION_JOB_NAME}\`].TranscriptionJobStatus" \
  --output text

結果(例):

COMPLETED

注釈

  • 作成直後のステータスは"IN_PROGRESS"です。

  • "COMPLETED"になればジョブは完了しています。

3.2. 後処理に必要な作業

環境変数を削除して、プロファイルの権限を無効にします。

変数の設定:

export -n AWS_DEFAULT_PROFILE

完了