gpt4 book ai didi

java - 在存储桶和远程服务器之间使用 AWS lambda(java) 进行 Rsync

转载 作者:行者123 更新时间:2023-12-01 19:40:09 24 4
gpt4 key购买 nike

我想使用 java lambda 函数在 AWS S3 存储桶和远程 ftp 服务器(接受 ftps)之间执行单向 rsync。因此,如果存储桶中的一个文件被删除,lambda cron 应该将其从远程 ftp 服务器中删除。我读到 aws cli 提供了 s3 同步功能。这可以是一个选择吗?

最诚挚的问候詹尼克

最佳答案

这非常简单。 Lambda 将设置为在 S3 删除时触发。基本代码(未经测试)类似于:

public class Handler implements RequestHandler<S3Event, String> {

public String handleRequest(S3Event s3event, Context context) {
try {
S3EventNotificationRecord record = s3event.getRecords().get(0);

// Object key may have spaces or unicode non-ASCII characters.
String srcKey = record.getS3().getObject().getUrlDecodedKey();

// now use Apache Commons Net
// (https://commons.apache.org/proper/commons-net/)
// to delete the file on the FTP server

FTPClient ftpClient = new FTPClient();

ftpClient.connect(server, port);

int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
contect.getLogger().log("SFTP Connect failed");
return;
}

boolean success = ftpClient.login(user, pass);

if (!success) {
contect.getLogger().log("Could not login to the FTP server");
return;
}
String fileToDelete = "/some/ftp/directory/" + srcKey;

boolean deleted = ftpClient.deleteFile(fileToDelete);
if (deleted) {
contect.getLogger().log("The file was deleted successfully.");
} else {
contect.getLogger().log("Could not delete the file, it may not exist.");
}
}
catch (IOException e) {
throw new RuntimeException(e);
}
}

在 S3 端,您需要启用 S3 存储桶才能将删除事件发送到 Lambda。这可以在 AWS 控制台中通过选择存储桶来完成,然后在高级部分添加选择事件、添加通知、选择“永久删除”(或“所有对象删除事件”)并添加您的 Lambda。

关于java - 在存储桶和远程服务器之间使用 AWS lambda(java) 进行 Rsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59179988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com