4

5Mb 未満などの小さなファイルの場合、署名付き URL を介した S3 へのアップロードは正常に機能します。これよりも大きなものをアップロードしようとすると400 Bad Request、S3 からRequestTimeoutエラーとして応答が返されるようです。

curl を使用してこれを再現できます。

# Create a test file:
mkfile -n 20m ./testfile

# Get the presigned URL
curl -XPOST http://localhost:3000/uploads -d "filename=testdata"

# Upload to S3
curl -H "Content-Type: binary/octet-stream" -XPUT -vvv -T testfile "<Presigned URL>"

署名コードは次のようになります。

@presigned_url ||= Aws::S3::Presigner.new.presigned_url(
  :put_object,
  bucket: ENV['AWS_BUCKET'],
  key: key,
  acl: 'private',
  expires_in: 3600,
  content_type: 'binary/octet-stream'
)

これは 5Mb 未満のファイルでは問題なく機能しますが、ファイル サイズが大きくなるにつれて、より頻繁に障害が発生することに注意してください。これらの問題を見て解決した人はいますか?

4

0 に答える 0