我正在使用S3TransferManager-Sample进行测试。 我创建了Cognito并设置了IAM并最后更改了constants.swift文件。我没有上传但无法下载的问题。 错误消息是: 下载失败:[错误域= com.amazonaws.AWSS3ErrorDomain代 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我有一个应用程序(在EC2实例上运行),它解析到达S3存储桶的新日志文件。 我已在此存储桶上设置了S3通知,以便在PUT请求中将消息放入SQS队列中。 目的是将新到达的日志文件从S3传输到EC2实例。
我认为Apache Camel将是解决这个问题的理想人选。 我对解决方案有以下问题/观察,并非常感谢对此的一些反馈:
我们可以使用Camel路由从SQS读取消息,然后从JSON消息中提取对象密钥。 是否可以在另一个Camel路由(使用S3组件)中将此对象密钥从S3复制到本地FS? 从外观上看,Camel S3组件似乎只能处理存储桶中的新对象,因为它只占用URI中的存储桶名称。 因此,可能无法从S3存储桶复制特定密钥。 此外,我不确定它是否可能在Camel中具有动态URI,因为每次对象名称都不同。
如果Camel S3组件确实能够处理到达S3存储桶的新对象,那么我们完全不需要S3通知。 但这有一个问题(因为它的无状态)如果由于某种原因这个应用程序失败,那么它将错过在停机期间到达的对象。
另一种可能性是使用Camel从SQS读取消息,使用普通Java类处理这些消息并从S3复制对象。 但这种方式并没有充分利用Apache Camel的优势。
有一个SNS来解耦文件处理和文件传输是好的。 但你真的需要这个吗? 它会增加应用程序的复杂性。 如果您只想将传入的文件处理到S3存储桶而不会错过,最简单的方法是创建一个存储桶,说“传入”,另一个调用“已处理”。 每次您的应用程序都可以扫描传入的存储桶并处理它,完成后将文件放入已处理的存储桶。
您需要注意的一件事是标记正在处理的文件以避免冲突。 您可以为其添加特殊后缀。
此外,AWS还提供了第三种方法来执行“事件通知”调用“Lambda函数”。 你也可以看一下。 它可以启用一些简单的处理程序,不需要自己编写额外的应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.