タケユー・ウェブ日報

Ruby on Rails や Flutter といったWeb・モバイルアプリ技術を武器にお客様のビジネス立ち上げを支援する、タケユー・ウェブ株式会社の技術ブログです。

CloudFront + 署名付きURL でFlashのcrossdomain.xml制限を回避した話

JWPlayer + CloudFrontで動画配信しようとした時に悩んだのでメモ。

前提

  • 動画ファイルはS3に配置(直接アクセスは不許可)
  • CloudFront は署名付きURLのアクセスのみ許可し、
  • JWPlayer(Flashモード)で再生

問題

このとき、

  1. Flashは動画ファイルのURLのルートにcrossdomain.xmlを探しに行く
  2. 署名していないURLなので403エラー

となり再生できない。

参考

CloudFront+S3で署名付きURLでプライベートコンテンツを配信する

Flashで別ドメインから署名付きURLでCloudFrontにアクセスするときの問題

でもどうしても、CloudFrontから配信したい・・・!

対処

かなり無理矢理ですが、2013年9月にサポートの発表のあった、カスタムエラーページ機能で回避しました。

【AWS発表】 Amazon CloudFrontがカスタムエラーページとレスポンスをサポート

やったことは

  • Distributionのカスタムエラーページで、403エラーの場合に、/crossdomain.xml200 OKで返すように設定
  • /crossdomain.xmlをアップロード

/crossdomain.xml以外にも200を返してしまうのが問題ですが、ひとまずFlashから署名付きURLのメディアファイルを読み込むことができるようになりました。

本来はエラーであるべきところを200を返すようなことは絶対にすべきではないと考えていますが、他に手を思い付かず・・・

他に良い方法があれば教えてください。