- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 AWS S3 存储桶,我每周都会在其中放置一个新的 ZIP 文件。
我想向我现有的 Web 服务添加一个功能,该服务是使用 Spring Boot 编写的:在本地同步存储桶并观察更改。
目前,同步效果很好:无论何时将新文件添加到存储桶中,都会在本地下载它。但是,我不知道要监听文件更新,这是一种在本地下载新文件时触发的方法。可以吗?
这是我的一段代码:
# --------
# | AWS S3 |
# --------
s3.credentials-access-key=***
s3.credentials-secret-key=****
s3.bucket = my-bucket
s3.remote-dir = zips
s3.local-dir = D:/s3-bucket/
@Log4j2
@Configuration
public class S3Config {
public static final String OUT_CHANNEL_NAME = "s3filesChannel";
@Value("${s3.credentials-access-key}") private String accessKey;
@Value("${s3.credentials-secret-key}") private String secretKey;
@Value("${s3.remote-dir}") private String remoteDir;
@Value("${s3.bucket}") private String s3bucket;
@Value("${s3.local-dir}") private String localDir;
/*
* AWS S3
*/
@Bean
public AmazonS3 getAmazonS3(
){
BasicAWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.withRegion(Regions.EU_WEST_1)
.withCredentials(new AWSStaticCredentialsProvider(creds))
.build();
return s3client;
}
@Bean
public S3SessionFactory s3SessionFactory(AmazonS3 pAmazonS3) {
return new S3SessionFactory(pAmazonS3);
}
@Bean
public S3InboundFileSynchronizer s3InboundFileSynchronizer(S3SessionFactory pS3SessionFactory) {
S3InboundFileSynchronizer sync = new S3InboundFileSynchronizer(pS3SessionFactory);
sync.setPreserveTimestamp(true);
sync.setDeleteRemoteFiles(false);
String fullRemotePath = s3bucket.concat("/").concat(remoteDir);
sync.setRemoteDirectory(fullRemotePath);
sync.setFilter(new S3RegexPatternFileListFilter(".*\\.zip$"));
return sync;
}
@Bean
@InboundChannelAdapter(value = OUT_CHANNEL_NAME, poller = @Poller(fixedDelay = "30"))
public S3InboundFileSynchronizingMessageSource s3InboundFileSynchronizingMessageSource(
S3InboundFileSynchronizer pS3InboundFileSynchronizer
) {
S3InboundFileSynchronizingMessageSource messageSource = new S3InboundFileSynchronizingMessageSource(pS3InboundFileSynchronizer);
messageSource.setAutoCreateLocalDirectory(true);
messageSource.setLocalDirectory(new File(localDir));
messageSource.setLocalFilter(new AcceptOnceFileListFilter<File>());
return messageSource;
}
@Bean("s3filesChannel")
public PollableChannel s3FilesChannel() {
return new QueueChannel();
}
@Bean
public IntegrationFlow fileReadingFlow(
S3InboundFileSynchronizingMessageSource pS3InboundFileSynchronizingMessageSource,
GtfsBizkaibus pGtfsBizkaibus,
@Qualifier("fileProcessor") MessageHandler pMessageHandler) {
return IntegrationFlows
.from(pS3InboundFileSynchronizingMessageSource, e -> e.poller(p -> p.fixedDelay(5, TimeUnit.SECONDS)))
.handle(pMessageHandler)
.get();
}
@Bean("fileProcessor")
public MessageHandler fileProcessor() {
FileWritingMessageHandler handler = new FileWritingMessageHandler(new File(localDir));
handler.setExpectReply(false); // end of pipeline, reply not needed
handler.setFileExistsMode(FileExistsMode.APPEND);
handler.setNewFileCallback((file, msg) -> {
log.debug("New file created... " + file.getAbsolutePath());
});
return handler;
}
最佳答案
您可以使用 S3 事件通知和 SQS 队列。基本上,当一个对象被添加到您的存储桶中时,S3 可以将一个事件发布到一个已注册的 SQS 队列中。然后,您可以让您的本地应用程序长时间轮询队列以查找新事件并处理添加的任何事件。
参见 here获取更多信息。
关于spring-boot - 同步 S3 Bucket 并监听变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58523004/
我正在通过 Google Bucket 托管一个简单的静态网站,请注意:比尔看起来很眼熟吗?我对高使用率感到惊讶。 是否存在用于 GoogleBucket 网站的 Hitcounter? 如何使用 S
Couchbase存储桶是否也将数据存储在内存中?我想使用Couchbase存储桶创建实时排行榜系统,并运行四个不同的查询:。1-选择现有排名2-如果存在更新排名(排名+1)3-插入排名和更多数据,如
Couchbase存储桶是否也将数据存储在内存中?我想使用Couchbase存储桶创建实时排行榜系统,并运行四个不同的查询:。1-选择现有排名2-如果存在更新排名(排名+1)3-插入排名和更多数据,如
我正在尝试在 elasticsearch 中运行此查询。我正在尝试在我的存储桶上运行自定义 scripted_metric 聚合。在指标脚本中,我想访问聚合它的存储桶 key 。 我在 ES 中的文档
您好,我是 Hive 的新手,我已经了解了 hadoop 中的桶概念,但未能理解以下几行。有人可以帮助我吗? SELECT avg(viewTime) FROM page_view TABLESAM
我正在改进表格的性能。 说这个表: CREATE TABLE user_info_bucketed(user_id BIGINT, firstname STRING, lastname STRING)
Android documentation提到操作系统对以下每个存储桶的应用程序施加的限制:“Activity ”、“工作集”、“频繁”和“稀有”。 唯一documentation我发现“从不”存储桶
我有一个配置单元查询,它读取 5 个大表并将记录输出到下一个进程。所有这些表都在 proc_dt 上分区并在 user_id 上分桶(5 个桶)。联接在 user_id 上完成,过滤在 proc_dt
我正在尝试在我的 Sonata 项目上配置 AWS s3 文件系统,但我总是收到以下错误: The configured bucket "my-bucket" does not exist. 我的 s
我已经设置了一个 airflow 工作流,将一些文件从 s3 提取到 Google Cloud 存储,然后运行 sql 查询工作流以在 Big Query 上创建新表。在工作流程结束时,我需要将最
我正在尝试在 Java 中使用 CDK 创建一个 lambda 和一个 DynamoDB。当我尝试执行“CDK 部署”时,我遇到以下错误: 11:20:30 AM | CREATE_FAILED
我有一个名为“Source”的 S3 存储桶。许多“.tgz”文件被实时推送到该存储桶中。我编写了一个 Java 代码来提取“.tgz”文件并将其推送到“目标”存储桶中。我将代码作为 Lambda 函
好的,这使我无法忍受,真是太复杂了…… 因此,要达到主题的目的,而又不授予用户对所有存储桶中所有文件的读取权限(proj中的其他存储桶都具有敏感数据) 我导航到存储桶->权限,并将用户添加为Stora
我正在尝试按照 https://cloud.google.com/storage/docs/hosting-static-website 上的说明进行操作从 Google Bucket 托管静态网站。
我正在尝试使用 Go SDK 创建一个 cloudtrail。按照 AWS 文档成功连接 AWS,没有任何问题。 我按照以下步骤创建跟踪 第 1 步 - 创建 S3 存储桶,以便所有跟踪日志文件都可以
据我所知,散列函数的目的是尽可能均匀地分发数据,当您发生冲突时,您有多种选择: 寻找下一个空槽 生成不同的散列并尝试将其粘贴到其他地方 把它放在一个溢出容器中(可以是一个列表、另一个哈希表或其他任何东
我正在努力复习我的期末考试,我正在复习我的教授给我的示例问题。谁能向我解释漏桶如何工作的概念。另外,这是我的教授给我的关于漏桶的复习问题。 一个漏桶位于主机网络接口(interface)。网络中的数据
我从我的用户那里收到了一些彩信。这些彩信是通过 twilio 发送的。所以 twilio 将这些文件存储到他们的服务器中,我可以从 twilio 访问这些文件。但就我而言,我需要将这些文件存储到 S3
我从我的用户那里收到了一些彩信。这些彩信是通过 twilio 发送的。所以 twilio 将这些文件存储到他们的服务器中,我可以从 twilio 访问这些文件。但就我而言,我需要将这些文件存储到 S3
我有一组 C# 对象。对于数据成员,每个对象都有一个 guid 字符串、一个 int 索引和一个文档名称字符串。这是一个典型的集合的样子: "guid1","c:\temp\doc1.docx",1
我是一名优秀的程序员,十分优秀!