📝
S3 の PutObject で Connection was closed ... のエラーが発生した際に確認すること
オブジェクトのアップロード - Amazon Simple Storage Service
AWS SDK、REST API、または AWS CLI を使用して 1 回のオペレーションでオブジェクトをアップロードする — 1 回の PUT オペレーションでは、最大 5 GB の単一のオブジェクトをアップロードできます。
アップロードするオブジェクトサイズが 5 GB 未満かどうかを確認しましょう。
5 GB 以上のファイルのアップロード
6 GB のファイルのアップロードを試みたところ、以下のエラーが発生しました。
# 6 GB のファイル作成
$ dd if=/dev/zero of=myfile.dat bs=1M count=6144
$ ls -lh myfile.dat
-rw-r--r--. 1 ec2-user ec2-user 6.0G Apr 12 12:40 myfile.dat
# アップロード
$ aws s3api put-object \
--bucket my-bucket-name \
--key myfile.dat \
--body myfile.dat
Connection was closed before we received a valid response from endpoint URL: "https://my-bucket-name.s3.ap-northeast-1.amazonaws.com/myfile.dat".
CloudTrail の証跡で PutObject イベントの記録を確認したところ、以下のエラーが記録されていました。
"errorCode": "EntityTooLarge",
"errorMessage": "Your proposed upload exceeds the maximum allowed size"
大容量オブジェクトのアップロードについて
Using high-level (s3) commands in the AWS CLI - AWS Command Line Interface
aws s3 コマンドを使用して大きなオブジェクトを Amazon S3 バケットにアップロードする場合、AWS CLI は自動的にマルチパートアップロードを実行します。
上記の内容も試してところ、上述の myfile.dat をアップロードできることを確認できました。
$ aws s3 mv myfile.dat s3://my-bucket-name
move: ./myfile.dat to s3://my-bucket-name/myfile.dat
CloudTrail の証跡には UploadPart の API が記録されていました。
マルチパートアップロードについては以下のナレッジセンターもご参照ください。
Amazon S3 へのマルチパートアップロードに AWS CLI を使用 | AWS re:Post
まとめ
今回は S3 の PutObject で Connection was closed ... のエラーが発生した際に確認することを紹介しました。
どなたかの参考になれば幸いです。
Discussion