AWS S3 uploadでドハマリしたお話
使用ライブラリ
事象
1ファイル目のファイルアップロードは成功するが、2ファイル目以降でMD5が合わないと言われてアップロードに失敗する。 ログを出力して確認してみると、2ファイル目以降のMD5の値がすべて同じ値になっている。
実装
foreachで回してファイルをアップロードする処理を書いていたが、MD5はライブラリ側で計算して出してくれるとあったので特別なにかを設定するようなことはしていない。
val objectMetadata = createObjectMetadata() uploadTargetfiles.foreach(file => { val putObjectRequest = new PutObjectRequest(bucket.name, file.getName, file) { this.setMetadata(objectMetadata) } client.putObject(putObjectRequest) })
private def createObjectMetadata(): ObjectMetadata = { new ObjectMetadata { // ゴニョゴニョ } }
解決方法
val objectMetadata = createObjectMetadata() をforeachの中に入れた。
原因
foreachの外でobjectMetaDataの定義をしていたのが原因っぽい が、よくわからない
誰かおしえてください。