EC2で動画がアップロードできない時のインフラ対処法
ホームページやアプリケーション開発でYoutubeやvimeoなどのAPIを利用して動画投稿、動画管理、動画プラットフォームアプリを作る場合に、動画自体のアップロードエラーが起こった際の対処をご紹介します。
勿論、状況や切り分けによりますが、今回はインフラエンジニア目線の対処法です。
私の場合は、軽い容量の動画だとアップロードできるが、重たい動画だとアップロードに失敗するという事象でした。
EC2インスタンスタイプ
インフラ側で最も怪しいのがインスタンスタイプです。
EC2のインスタンスタイプは複数種類がありますが、ネットワーク帯域幅やEBS帯域幅に着目している人は少ないと思います。
汎用インスタンスのT3/T2などは、ネットワークパフォーマンスとして最大で5Gbps程度となります。帯域幅については言及されていません。
そのなかでも、M5系やM6系になると、ネットワーク帯域幅、EBS帯域幅としてある程度の値が確保されています。
https://aws.amazon.com/jp/ec2/instance-types/
たとえば、1秒間に合計で10MbyteのデータをEC2に対して送信している場合は、
10[M] * 8[bit] = 80[M] となります。
よって、帯域幅が80M以上であれば問題なく動画をアップロードできる計算です。
1Gを超える重い動画となるとM5系を選定した方が良いでしょう。
CloudFrontのタイムアウト設定
CloudFrontを利用している場合は、タイムアウト設定を確認しましょう。
デフォルトのタイムアウトは 30 秒、1〜60秒の範囲で設定可能で、上限緩和申請も可能です。
変更方法は下記です。
https://repost.aws/ja/knowledge-center/cloudfront-custom-origin-response
オリジンの一番下のプルダウンにあります。
動画をアップロードしている時間が長い場合にタイムアウト設定に引っかかってエラーとなる場合があります。
keepalive(キープアライブ)の設定も長めに変更しておきましょう。
タイムアウトと同じ個所で変更が可能です。
keep aliveとは、タイムアウト設定と似たような設定で、
タイムアウト設定の秒数×keep-aliveの回数を満たしたときに接続を切る設定です。
たとえば、タイムアウト設定が10秒、keep-aliveが5回のときは
10s * 5 =50s で接続が切れます。
回線環境
ご自身の回線環境を確認しましょう。
回線速度が遅いとアップロードに時間がかかってしまいます。
特に、テレワーク等で自分の家で作業をしていると、回線速度が遅い場合にこのような事象になります。
その場合は、他の人に協力を得てアップロードを試して貰って切り分けをしてみましょう。
他人はアップロードできて自分がアップロードできない場合は回線速度を改善させるしかありません。
その他試しておきたいこと
キャッシュ
ブラウザキャッシュやEC2のバックエンドのキャッシュ、CloudFrontのキャッシュなどを削除してみましょう。状況が変わるかもしれません。
EC2再起動
EC2の再起動を試してみましょう。CPUやメモリによることが原因かもしれません。
AWSの効果的な学習方法は?

最後に、AWSの効果的な学習方法をご紹介します。
自学自習はUdemy講座
オンラインプラットフォームであるUdemyは安価で手軽にAWSの学習が可能です。
しかし、上記で紹介したような実際のAWSエンジニアが実施している構築スキルまでは教えてくれません。初心者~中級者向けの講座が多くなっています。
私も受講した、初心者向けAWS講座を下記記事でまとめています。ご参考ください。
1人で学習が難しい場合はオンラインレッスン
1人で学習が難しい場合はオンラインレッスンがおすすめです。
最近では、AWS講座を提供するオンラインレッスンも増えてきました。
料金は高くなりますが、現役エンジニアからAWSについて学ぶことができます。
本ブログ執筆者のメンタリングも受付中
本ブログを執筆している[KAITech]もメンタリングを受け付けています。
オンラインレッスンは高くて手が出せないという方は私までお気軽にご相談ください。
下記から承っております。