【发布时间】:2019-01-08 01:32:56
【问题描述】:
这里是 Java 8。我有一个具有以下文件夹子结构的 S3 存储桶 (myapp-bucket):
/artwork
/upload
/staging
myapp-bucket/artwork 文件夹如下所示:
我有将图像文件上传到/upload 文件夹的软件,然后我正在编写的另一个应用程序应该处理该图像并将其复制到/staging 文件夹。我必须执行此 S3 复制的代码如下:
CopyObjectRequest copyObjectRequest = new CopyObjectRequest(
bucketName,
objectKey,
destinationBucket,
destinationKey
);
log.info(
"copying object from s3://{}/{} to s3://{}/{}",
bucketName,
objectKey,
destinationBucket,
destinationKey
);
// Constructed via
AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1).build();
amazonS3.copyObject(copyObjectRequest);
运行时,我看到以下日志输出:
[main] DEBUG com.me.myapp.ImageProcessor - copying object from s3://myapp-bucket/artwork/upload/rlj_amp244001_270.jpeg to s3://myapp-bucket/artwork/staging
但myapp-bucket/artwork 文件夹的最终状态如下所示:
看起来,与其将myapp-bucket/artwork/upload/<theImageFile> 复制到myapp-bucket/artwork/staging/ 目录,不如直接在/artwork 下创建一个新文件 并将其命名为staging,并可能复制二进制文件图像的内容到该暂存文件中。我哪里错了?!我只想以myapp-bucket/artwork/staging/<theImageFile> 结尾——提前致谢!
【问题讨论】:
-
错字 - 您没有以
/结尾 S3 存储桶文件夹名称。请记住,S3 完全按照您的指示进行操作 - 它使用您的 jpeg 并将其放在s3://myapp-bucket/artwork/staging,但这是它自己的文件,而不是文件夹。
标签: java amazon-web-services amazon-s3