S3にアップロードできる文字数(1,024バイト)制限

S3はファイルの格納庫としても使え、静的Webホスティングもできる汎用性のあるサービスですが、S3にアップロード可能なオブジェクトは、いくつかの制限があります。 このドキュメントの中に以下の記述があります。
キー名は一続きの Unicode 文字で、UTF-8 にエンコードすると最大で 1,024 バイト長になります。
S3のオブジェクトに格納するキー名の長さはあまり意識したことがなかったのですが、 簡単なスクリプトをかいて調べてみました。

前提条件

  • aws s3コマンド実行できるようにしておく
    • aws configure などでアクセストークンやアクセスシークレットを登録しておくといいです
  • S3上に検証するためのバケットを用意しておく

スクリプトを実行してみる

境界となる 1024バイト 前後のオブジェクトをアップしてみて検証します。 以下のようなスクリプトを s3_test.rb という名前で保存して実行します。 私の環境はruby2.4ですが、rubyのバージョンに依存せず実行可能だと思います。 実行します。 a が 1023文字のオブジェクトb が 1024文字のオブジェクト はアップロードできると思います。
c が 1025文字のオブジェクト をアップロードしようとすると以下のエラーとなります。 ドキュメントどおり 1,024バイト長 のジャストのサイズまではアップロードできましたが、1,025バイト長はエラーとなりました。

補足) S3オブジェクトの階層も含めたフルパスのサイズで 1,024バイト の制限となります

マネジメントコンソール等のでS3のクライアントツールで見たときに以下のような階層をもったファイルの場合、 S3の内部的には dir1/dir2/test.txt というキー名で管理されます。この場合は階層のパスも含めたフルパスのサイズで制限がかかります。そのため、階層が深いファイルも注意が必要です。

まとめ

冒頭にもリンクしている以下の記事には、その他にキー名として利用しても安全な文字列の記述なども書かれていますので合わせて参考にしていただけたらと思います。 パブリッククラウドであるAWSの各サービスは機能も豊富で色々なことが実現可能ですが、 セキュリティやパフォーマンスを考慮したサービスの制限が結構あります。 サービスを使ってできることだけではなく、 利用するサービスにどのような制限があるのかを頭の片隅におきつつ利用していくことが必要ですね。

AWS運用自動化サービス「Cloud Automator」無料トライアルはこちらから

CATEGORY :
TAG :

COMMENT ON FACEBOOK