7.1. Transcribe転写ジョブの作成 (handson-cli-transcribe-job-custom)¶
作業の目的 [why]¶
Transcribeジョブ名"handson-cli-transcribe-job-custom"を作成します。
完了条件/事前条件 [設計者用情報]
完了条件 [after]
主処理は、以下を満たしたときに成功したものとします。
- 完了条件1
Transcribe転写ジョブ名"handson-cli-transcribe-job-custom"が存在する。
- 完了条件2
Transcribe転写ジョブ名"handson-cli-transcribe-job-custom"のステータスが"COMPLETED"である。
事前条件 [before]
主処理の実施は、以下の状態であることを前提とします。
- 事前条件1
S3バケット名"handson-cli-transcribe-source-XXXXXXXXXXXX"が存在する。
- 事前条件2
S3バケット名"handson-cli-transcribe-source-XXXXXXXXXXXX"に転写対象メディア名"s3://handson-cli-transcribe-source-XXXXXXXXXXXX/handson-cli-transcribe-ja-JP.mp3"が存在する。
- 事前条件3
Transcribe転写ジョブ名"handson-cli-transcribe-job-custom"が存在しない。
- 事前条件4
転写先S3バケット"handson-cli-transcribe-custom-XXXXXXXXXXXX"が存在する。
作業対象 [what]¶
Transcribeサービス
標準時間(合計)¶
8分
パラメータ設定¶
- パラメータ設定の標準時間
2分
作業に必要なモノ・情報 [resource]¶
作業開始には、以下が全て揃っていることが必要です。
リソース1: Transcribe転写ジョブ名
作成するTranscribe転写ジョブ名です。
今回は"handson-cli-transcribe-job-custom"とします。
リソース2: 言語コード名
利用する言語コードの名称です。
今回は"ja-JP"とします。
リソース3: 入力フォーマット名
利用する入力フォーマットの名称です。
今回は"mp3"とします。
リソース4: S3バケット名
利用する転写メディアが配置されているS3バケット名です。
今回は"handson-cli-transcribe-source-XXXXXXXXXXXX"とします。
リソース5: Transcribe転写メディアファイル名
利用する転写メディアが配置されているS3パス名です。
今回は"s3://handson-cli-transcribe-source-XXXXXXXXXXXX/handson-cli-transcribe-ja-JP.mp3"とします。
リソース5: 転送先S3バケット名
作成された転写ファイルが配置されるS3バケット名です。
今回は"handson-cli-transcribe-custom-XXXXXXXXXXXX"とします。
パラメータの指定¶
作業に必要なパラメータを変数に格納をします。
0.1. Transcribe転写ジョブの指定¶
Transcribe転写ジョブを指定します。
変数の設定:
TRANSCRIBE_TRANSCRIPTION_JOB_NAME='handson-cli-transcribe-job-custom'
0.4. S3バケット名¶
変数の設定:
S3_BUCKET_PREFIX='handson-cli-transcribe-source'
コマンド:
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-source-XXXXXXXXXXXX
0.5. S3オブジェクト名¶
変数の設定:
S3_OBJECT_NAME='handson-cli-transcribe-ja-JP.mp3'
変数の設定:
URI_S3_OBJECT="s3://${S3_BUCKET_NAME}/${S3_OBJECT_NAME}" \ && echo ${URI_S3_OBJECT}
結果(例):
s3://handson-cli-transcribe-source-XXXXXXXXXXXX/handson-cli-transcribe-ja-JP.mp3
0.6. 転送先S3バケット名¶
変数の設定:
S3_BUCKET_DESTINATION_PREFIX='handson-cli-transcribe-custom'
コマンド:
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-custom-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-11-22-transcribe-transcription_job-create-expand-s3.env
各変数に正しいパラメータ値が格納されていることを確認しながら保存します。
変数の確認:
cat << EOF > ${FILE_PARAMETER} # 0.a. AWS_DEFAULT_REGION:"ap-northeast-1" 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-custom" TRANSCRIBE_TRANSCRIPTION_JOB_NAME="${TRANSCRIBE_TRANSCRIPTION_JOB_NAME}" # 0.2. TRANSCRIBE_LANGUAGE_CODE:"ja-JP" 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-source-XXXXXXXXXXXX" S3_BUCKET_NAME="${S3_BUCKET_NAME}" # 0.5. URI_S3_OBJECT:"s3://handson-cli-transcribe-source-XXXXXXXXXXXX/handson-cli-transcribe-ja-JP.mp3" URI_S3_OBJECT="${URI_S3_OBJECT}" # 0.6. S3_BUCKET_DESTINATION:"handson-cli-transcribe-custom-XXXXXXXXXXXX" S3_BUCKET_DESTINATION="${S3_BUCKET_DESTINATION}" EOF cat ${FILE_PARAMETER}
下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。
タスクの実施¶
- タスク標準時間
6分
1. 前処理¶
1.1. 処理対象の状態確認¶
主処理の実施は、以下の状態であることを前提とします。
前提と異なることが判明した場合、直ちに処理を中止します。
事前条件1: S3バケット名"handson-cli-transcribe-source-XXXXXXXXXXXX"が存在する。
「S3バケット名"handson-cli-transcribe-source-XXXXXXXXXXXX"が存在する。」ことを確認します。
コマンド:
aws s3 ls s3://${S3_BUCKET_NAME} > /dev/null 2>&1
コマンド:
echo $?
結果(例):
0
事前条件2: S3バケット名"handson-cli-transcribe-source-XXXXXXXXXXXX"に転写対象メディア名"s3://handson-cli-transcribe-source-XXXXXXXXXXXX/handson-cli-transcribe-ja-JP.mp3"が存在する。
「S3バケット名"handson-cli-transcribe-source-XXXXXXXXXXXX"に転写対象メディア名"s3://handson-cli-transcribe-source-XXXXXXXXXXXX/handson-cli-transcribe-ja-JP.mp3"が存在する。」ことを確認します。
コマンド:
aws s3 ls ${URI_S3_OBJECT}
結果(例):
2019-11-22 01:23:45 xxxxxxxx handson-cli-transcribe-ja-JP.mp3
事前条件3: Transcribe転写ジョブ名"handson-cli-transcribe-job-custom"が存在しない。
「Transcribe転写ジョブ名"handson-cli-transcribe-job-custom"が存在しない。」ことを確認します。
コマンド:
aws transcribe list-transcription-jobs \ --query "TranscriptionJobSummaries[?TranscriptionJobName == \`${TRANSCRIBE_TRANSCRIPTION_JOB_NAME}\`].TranscriptionJobName" \ --output text
結果(例):
(出力なし)
事前条件4: 転写先S3バケット"handson-cli-transcribe-custom-XXXXXXXXXXXX"が存在する。
「転写先S3バケット"handson-cli-transcribe-custom-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-source-XXXXXXXXXXXX/handson-cli-transcribe-ja-JP.mp3
2. 主処理¶
Transcribe転写ジョブの作成¶
パラメータの確認:
cat << ETX # TRANSCRIBE_TRANSCRIPTION_JOB_NAME:"handson-cli-transcribe-job-custom" TRANSCRIBE_TRANSCRIPTION_JOB_NAME="${TRANSCRIBE_TRANSCRIPTION_JOB_NAME}" # TRANSCRIBE_LANGUAGE_CODE:"ja-JP" 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-source-XXXXXXXXXXXX/handson-cli-transcribe-ja-JP.mp3" STRING_URI_TRANSCRIBE_MEDIA="${STRING_URI_TRANSCRIBE_MEDIA}" # S3_BUCKET_DESTINATION:"handson-cli-transcribe-custom-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-custom", "TranscriptionJobStatus": "IN_PROGRESS", "LanguageCode": "ja-JP", "MediaFormat": "mp3", "Media": { "MediaFileUri": "s3://handson-cli-transcribe-source-XXXXXXXXXXXX/handson-cli-transcribe-ja-JP.mp3" }, "CreationTime": xxxxxxxxxx.xxx } }
3. 後処理¶
3.1. 完了条件の確認¶
主処理は、以下を満たしたときに成功したものとします。
完了条件1: Transcribe転写ジョブ名"handson-cli-transcribe-job-custom"が存在する。
「Transcribe転写ジョブ名"handson-cli-transcribe-job-custom"が存在する。」ことを確認します。
コマンド:
aws transcribe list-transcription-jobs \ --query "TranscriptionJobSummaries[?TranscriptionJobName == \`${TRANSCRIBE_TRANSCRIPTION_JOB_NAME}\`].TranscriptionJobName" \ --output text
結果(例):
handson-cli-transcribe-job-custom
完了条件2: Transcribe転写ジョブ名"handson-cli-transcribe-job-custom"のステータスが"COMPLETED"である。
「Transcribe転写ジョブ名"handson-cli-transcribe-job-custom"のステータスが"COMPLETED"である。」ことを確認します。
コマンド:
aws transcribe list-transcription-jobs \ --query "TranscriptionJobSummaries[?TranscriptionJobName == \`${TRANSCRIBE_TRANSCRIPTION_JOB_NAME}\`].TranscriptionJobStatus" \ --output text
結果(例):
COMPLETED
注釈
作成直後のステータスは"IN_PROGRESS"です。
"COMPLETED"になればジョブは完了しています。