5.6.8. S3 Producer Operation 示例
- Single Upload:此操作会根据正文内容将文件上传到 S3
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.KEY, "camel.txt"); exchange.getIn().setBody("Camel rocks!"); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client") .to("mock:result");
此操作将上载文件 camel.txt,其中包含 mycamelbucket bucket 中内容"Camel rocks!"
- 多部分上传:此操作将根据正文内容执行将文件上传到 S3 的多部分
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(AWS2S3Constants.KEY, "empty.txt"); exchange.getIn().setBody(new File("src/empty.txt")); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&multiPartUpload=true&autoCreateBucket=true&partSize=1048576") .to("mock:result");
此操作将基于 mycamelbucket bucket 中文件 src/empty.txt 文件的内容执行文件 empty.txt 的多部分上传
- CopyObject:此操作将对象从一个存储桶复制到不同的存储桶
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.BUCKET_DESTINATION_NAME, "camelDestinationBucket"); exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); exchange.getIn().setHeader(S3Constants.DESTINATION_KEY, "camelDestinationKey"); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=copyObject") .to("mock:result");
此操作会将带有标头 camelDestinationKey 中 name 表示的对象复制到来自 bucket mycamelbucket 的 camelDestinationBucket bucket。
- DeleteObject:此操作从存储桶中删除对象
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=deleteObject") .to("mock:result");
此操作将从存储桶 mycamelbucket 中删除对象 camelKey。
- ListBuckets:此操作列出此地区中此帐户的存储桶
from("direct:start") .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listBuckets") .to("mock:result");
此操作将列出此帐户的存储桶
- DeleteBucket:此操作删除指定为 URI 参数或标头的存储桶
from("direct:start") .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=deleteBucket") .to("mock:result");
此操作将删除存储桶 mycamelbucket
- ListObjects:此操作列表特定存储桶中的对象
from("direct:start") .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listObjects") .to("mock:result");
此操作将列出 mycamelbucket 存储桶中的对象
- GetObject:此操作获取特定存储桶中的一个对象
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObject") .to("mock:result");
此操作将返回与 mycamelbucket bucket 中 camelKey 对象相关的 S3Object 实例。
- GetObjectRange:此操作在特定存储桶中获取单个对象范围
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); exchange.getIn().setHeader(S3Constants.RANGE_START, "0"); exchange.getIn().setHeader(S3Constants.RANGE_END, "9"); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObjectRange") .to("mock:result");
此操作将返回与 mycamelbucket 存储桶中的 camelKey 对象相关的 S3Object 实例,其中包含从 0 到 9 的字节。
- CreateDownloadLink:此操作将通过 S3 Presigner 返回下载链接
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); } }) .to("aws2-s3://mycamelbucket?accessKey=xxx&secretKey=yyy®ion=region&operation=createDownloadLink") .to("mock:result");
此操作会返回存储桶 mycamelbucket 和地区中的文件 camel-key 的下载链接 url