amazon-web-services - 仅在 URI 中设置 AWS S3 Key 标头
问题描述
我有一个使用 apache camel 的 rest api。当我在一条路线上发出一个发布请求时,它应该从 S3 获取一个文件。我正在发送 json data(filename, bucketName, accesskey, secretkey, region) 以便从 s3 中提取文件。这是该代码->
public static class HelloRoute extends RouteBuilder {
@Override
public void configure() {
rest("/")
.post("file-from-s3")
.route()
.setHeader(AWS2S3Constants.KEY, constant("filename"))
.to("aws2-s3://bucketnameaccessKey=INSERT&secretKey=INSERT®ion=INSERT&operation=getObject")
.to("file:/tmp/")
问题是我不想要这个.setHeader(AWS2S3Constants.KEY, constant("filename"))
部分。有没有办法删除它并在 URI 本身中放置一个替代项。我试过这样的东西->
public static class HelloRoute extends RouteBuilder {
@Override
public void configure() {
rest("/")
.post("file-from-s3")
.route()
.to("aws2-s3://bucketnameaccessKey=INSERT&secretKey=INSERT®ion=INSERT&filename=hello.txt&operation=getObject")
.to("file:/tmp/")
但这给了我一个错误java.lang.IllegalArgumentException: AWS S3 Key header missing.
。还有其他方法可以做到这一点吗?
解决方案
有时,由于有多个选项,构建 AWS 请求可能很复杂。我们介绍了使用 POJO 作为主体的可能性。
看看:https ://camel.apache.org/components/latest/aws2-s3-component.html#_using_a_pojo_as_body
推荐阅读
- python - Create a new column filled by a variable name in python
- javascript - How to sort an array of objects by a key and then push the other key to a new array in the sorted order?
- javascript - How do I auto-sum two boxes into a different box?
- javascript - One-liner to call a function if it's defined, else call another function
- excel - Excel - 排名调查响应
- facebook - 带有页面的 Facebook 测试帐户
- dart - ListView 默认为空,只有在用户点击搜索栏或热加载时才会在 List 中显示数据
- c# - 无法打开 PDF,该 PDF 是使用用 C# 编写的 print to pdf 代码生成的
- r - dplyr::select - 多次使用列?
- ios - 在 spritekit 中的某种数组、类或结构中存储多个 userdefaults 变量?