S3 で大きなサイズのファイルのストレージクラスを変更時に「Part number must be an integer between 1 and 10000, inclusive」エラーが表示される場合の対処方法

S3 で大きなサイズのファイルのストレージクラスを変更時に「Part number must be an integer between 1 and 10000, inclusive」エラーが表示される場合の対処方法

AWS マネジメントコンソールからは一定のサイズまでのオブジェクトのみ変更が可能なため、代わりにライフサイクルルールや AWS CLI を使用して対応を行います。
Clock Icon2022.03.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

S3 バケットにアップロード済みの大きなサイズのファイルがあります。AWS マネジメントコンソールの[アクション]から[ストレージクラスを編集する]を選択してストレージクラスを変更しようとするとPart number must be an integer between 1 and 10000, inclusiveエラーが表示されます。対応方法があれば教えてください。

Part number must be an integer between 1 and 10000, inclusive

どう対応すればいいの?

AWS マネジメントコンソールからは 160 GB までのオブジェクトのみ、ストレージクラスの変更が可能です(※2024年5月9日時点)。それより大きなサイズのオブジェクトのストレージクラスを変更したい場合は、その他の方法を使用する必要があります。

オブジェクトのサイズが 160 GB 未満の場合は、Amazon S3 コンソールを使用してオブジェクトのストレージクラスを変更できます。それ以上大きい場合は、S3 Lifecycle の設定を追加すると、オブジェクトのストレージクラスを変更できます。

対応方法

対応方法につきましては、2通りあります。

1.ライフサイクルルールを使用して移行を行う

ストレージクラスを変更したいオブジェクトが存在するバケットに対して適切なライフサイクルルールを設定します。

バケット内にストレージクラスを変更したくないオブジェクトが存在する場合は、prefix やタグフィルター使用してルールをより詳細に指定する必要があります。

2.チャンクサイズを大きなサイズに設定して AWS CLI で実行する

より大きなチャンクサイズを指定してから AWS CLI コマンドを実行することでストレージクラスを変更することもできます。

aws configure setコマンドでチャンクサイズを増やします。5 MB から 5 GB まで指定可能です。

$ aws configure set default.s3.multipart_chunksize <サイズを指定>

送信元と送信先に同じバケットとキーを入力し、ストレージクラスを指定してaws s3 cpコマンドを実行します。

$ aws s3 cp s3://bucket/key s3://bucket/key --storage-class <ストレージクラス>

自分の環境で以下のようにコマンド実行をしたところ...

$ aws configure set default.s3.multipart_chunksize 5GB
$ aws s3 cp s3://XXXXXX/test s3://XXXXXX/test --storage-class STANDARD_IA
copy: s3://XXXXXX/test to s3://XXXXXX/test 

ストレージクラスの変更に成功しました! ストレージクラスの変更に成功

参考情報

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.