インフラ

S3バケットのパス形式URLが2020年10月から廃止される件

更新日:

静か過ぎる重大発表

それは日本がきたる改元とゴールデンウィークに浮き足立っている時の出来事でした。

Amazon S3 Path Deprecation Plan – The Rest of the Story (原文)
https://aws.amazon.com/jp/blogs/aws/amazon-s3-path-deprecation-plan-the-rest-of-the-story/

Amazon S3 path-style 廃止予定 – それから先の話 – (SA 焼尾さんによる翻訳)
https://aws.amazon.com/jp/blogs/news/amazon-s3-path-deprecation-plan-the-rest-of-the-story/

なにやら、上記AWSブログにて重大な発表があったようです……。

 

要約すると?

結論から申し上げますと、S3にて旧型のパス形式によるリクエストを受け付けなくなるよ、という話になります。
APIからの呼び出しは勿論、ブラウザでHTTPリクエストを送信するのも出来なくなります。

もう少し詳しく

2020/09/30より後に作成されたS3バケットにて、パス形式(v1)のリクエストのサポートが廃止されます。
つまりリクエストを受け付けなくなります。

発表直後は一斉にサポート停止するという慈悲の無い感じの対応予定だったようですが、
反響が強かったのか、2019/09/30以前に作成されたバケットに対してはサポートを継続し、それより後に新規作成されたバケットに対してのサポートを行わない方向性へ変更があったようです。

 

形式って?

S3では、バケット(エンドポイント)にアクセスする為に2つの形式のURLがサポートされています(2019/05現在)。

 

仮想ホスト形式(virtual-hosted-style)

http://<bucket-name>.s3.amazonaws.com
http://<bucket-name>.s3-ap-northeast-1.amazonaws.com (リージョンを指定する形でも可能)

 

パス方式(path-style)

http://s3.amazonaws.com/<bucket-name> (バージニアのみこの形)
http://s3-ap-northeast-1.amazonaws.com/<bucket-name> (それ以外のリージョンではリージョン指定が必須)

 

どう違う?

最も大きな違いは、仮想ホスト形式ではバケットがどのリージョンにあっても同じ形式でアクセス可能だが、
パス方式ではリージョン指定が必須になっていることです。

 

影響範囲は?

私がパッと思い浮かぶ限りでは、以下の影響範囲が考えられました。
いずれもパス指定を行っていることを想定しています。多分もっとあります。

  • APIからのS3バケット呼び出し
  • Webサイトの画像などのコンテンツをS3バケットに格納している場合、画像ファイルの呼び出し
  • sitemap.xmlなどの静的ファイルをS3バケットで管理している場合、XMLファイルの呼び出し
  • 当然、ブラウザでURL直指定してアクセス出来なくなる

 

対応について

とりあえずまだ1年以上あるということと、それまでに作成したバケットであれば影響がないと聞いて安心しました……。
しかしながら、一度サポートを打ち切るとされている以上、将来的にいつパス形式が完全に切られるかはまさに秒読み状態であると言えます。
少しずつ、システムの改修などを進めていく必要がありそうです。地味につらいなー……。

 

仮想ホスト形式移行する際の注意点

公式ドキュメントに案内がありますが、バケット名にピリオドを含めているとSSL化出来ないなどの制約があるようですので、
気をつける必要があります。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/BucketRestrictions.html

 

おわりに

先週(4/30)、私たちは非常に静かな(実際には静かすぎる)発表を行いました。

ほんとだよ!もっと大々的に発表して!メールとか送って欲しいよ!!!

現場からは以上です。
それではお疲れ様でした。

-インフラ
-,

Copyright© すじこネット , 2019 - 2021 All Rights Reserved Powered by STINGER.