AWS Elemental MediaConvertで作成したジョブテンプレートをCloudFormationで展開する

# 概要
実験的にMediaConvertにてジョブテンプレートを作成し挙動を終え、いざ既存のCloudformation.ymlに追加するとなると少しつまずいたので、そのまとめとなります。

# 初めに
今回作成したジョブテンプレートは以下の通りです。

```json
{
  "Description": "convert webm to mp3",
  "Category": "mp3",
  "Name": "JobTemplateName",
  "Settings": {
    "TimecodeConfig": {
      "Source": "ZEROBASED"
    },
    "OutputGroups": [
      {
        "Name": "File Group",
        "Outputs": [
          {
            "ContainerSettings": {
              "Container": "RAW"
            },
            "AudioDescriptions": [
              {
                "AudioSourceName": "Audio Selector 1",
                "CodecSettings": {
                  "Codec": "MP3",
                  "Mp3Settings": {
                    "RateControlMode": "VBR",
                    "VbrQuality": 1
                  }
                }
              }
            ]
          }
        ],
        "OutputGroupSettings": {
          "Type": "FILE_GROUP_SETTINGS",
          "FileGroupSettings": {
            "Destination": "s3://output_bucket/"
          }
        }
      }
    ],
    "Inputs": [
      {
        "AudioSelectors": {
          "Audio Selector 1": {
            "DefaultSelection": "DEFAULT"
          }
        },
        "VideoSelector": {},
        "TimecodeSource": "ZEROBASED"
      }
    ]
  },
  "AccelerationSettings": {
    "Mode": "DISABLED"
  },
  "StatusUpdateInterval": "SECONDS_60",
  "Priority": 0,
  "HopDestinations": []
}

```

# ジョブテンプレートをymlに起こす手順
まず初めにAWS CloudShellにて以下のコマンドを実行しテンプレートの設定を取得します。
この時`JobTemplateName`にはすでに作成してあるジョブテンプレートの名前を入れてください。

```bash
aws mediaconvert get-job-template --name JobTemplateName --query 'JobTemplate.Settings'
```

コマンド実行後jsonで設定が出力されるのでそれをymlに置き換えます。
(面倒なので[DevToys](https://apps.microsoft.com/detail/9pgcv4v3bk4w?launch=true&mode=full&hl=ja-jp&gl=jp&ocid=bingwebsearch)を使って変換しました)

```yml
Inputs:
  - AudioSelectors:
      Audio Selector 1:
        DefaultSelection: DEFAULT
    TimecodeSource: ZEROBASED
    VideoSelector: {}
OutputGroups:
  - Name: File Group
    OutputGroupSettings:
      FileGroupSettings:
        Destination: s3://output_bucket/
      Type: FILE_GROUP_SETTINGS
    Outputs:
      - AudioDescriptions:
          - AudioSourceName: Audio Selector 1
            CodecSettings:
              Codec: MP3
              Mp3Settings:
                RateControlMode: VBR
                VbrQuality: 1
        ContainerSettings:
          Container: RAW
        Extension: mp3
TimecodeConfig:
  Source: ZEROBASED
```

最後に上記ymlを追加するだけです。
以下のymlは追加後になります。

```yml
Resources:
  MediaConvertJobTemplate:
    Type: AWS::MediaConvert::JobTemplate
    UpdateReplacePolicy: Delete
    DeletionPolicy: Delete
    Properties:
      Name: JobTemplateName
      Description: convert webm to mp3
      Category: mp3
      AccelerationSettings: 
        Mode: DISABLED
      StatusUpdateInterval: SECONDS_60
      Priority: 0
      SettingsJson:
        Inputs:
          - AudioSelectors:
              Audio Selector 1:
                DefaultSelection: DEFAULT
            TimecodeSource: ZEROBASED
            VideoSelector: {}
        OutputGroups:
          - Name: File Group
            OutputGroupSettings:
              FileGroupSettings:
                Destination: s3://output_bucket/
              Type: FILE_GROUP_SETTINGS
            Outputs:
              - AudioDescriptions:
                  - AudioSourceName: Audio Selector 1
                    CodecSettings:
                      Codec: MP3
                      Mp3Settings:
                        RateControlMode: VBR
                        VbrQuality: 1
                ContainerSettings:
                  Container: RAW
                Extension: mp3
        TimecodeConfig:
          Source: ZEROBASED
```

# 感想
SettingsJsonって名前でタイプがJsonとなっていたので頭がバグり散らかしてつまずいちゃいました...

# 参考
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconvert-jobtemplate.html?form=MG0AV3