如何将文件从一个S3客户端移动到另一个S3客户端

普拉迪:

如果我有两个aws服务帐户,每个帐户都可以访问s3存储桶(两个都不能访问)。有没有一种有效的方式在每个存储桶之间发送文件?

这是我到目前为止所拥有的:

System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "true");

//first account client
AWSCredentials credentialsFrom = new BasicAWSCredentials(fromAccessKey, fromSecretKey);
AmazonS3 s3ClientFrom = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentialsFrom)).withRegion(Regions.US_EAST_1).build();

//second account client
AWSCredentials credentialsTo = new BasicAWSCredentials(toAccessKey, toSecretKey);
AmazonS3 s3ClientTo = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentialsTo)).withRegion(Regions.US_EAST_1).build();

//get contents from first s3 client
ListObjectsRequest listObjectsRequestFrom = new ListObjectsRequest().withBucketName(fromBucket).withPrefix(fromPrefix).withDelimiter("/");
ObjectListing listingFrom = s3ClientFrom.listObjects(listObjectsRequestFrom);

//get each file from first s3 client
for (S3ObjectSummary objectSummary: listingFrom.getObjectSummaries()) {
    S3Object s3Object = s3ClientFrom.getObject(new GetObjectRequest(fromBucket, objectSummary.getKey()));
    //if current key is not a directory
    if(!objectSummary.getKey().substring(objectSummary.getKey().length() - 1).equalsIgnoreCase("/")) {
        //get name of the file by splitting the key/path by "/"
        String[] fileName = objectSummary.getKey().split("[/]");

        //put current file contents to new bucket
        s3ClientTo.putObject(toBucket, toPrefix + fileName[fileName.length - 1], s3Object.getObjectContent(), s3Object.getObjectMetadata());
    }
}
普拉迪:

似乎问题中的代码片段是正确的方法。如果其他人有更好/更干净的解决方案,我将更新答案。谢谢xerx593的帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将客户端(代理)移动到另一个部署组

客户端如何了解另一个客户端是否已连接

在S3中将文件从一个文件夹移动到另一个文件夹

使用AWS Lambda将文件从一个s3存储桶移动到AWS中的另一个存储桶

如何通过SignalR从一个客户端向另一个客户端发送javascript对象

socketcluster 将客户端从一个工人传递到另一个工人

如何使用 AWS CLI 根据创建时间将 s3 对象从一个存储桶移动到另一个存储桶

如何将文件从AWS S3下载到客户端设备?

如何将 GCP OAuth 客户端 ID 迁移到另一个项目

如何使用 Lambda 将文件从一个文件夹移动到同一 AWS S3 存储桶中的另一个文件夹?

Grpc-从一个客户端向连接到同一服务器的另一个客户端发送消息

使用 lambda 函数调整图像大小并将图像从一个 s3 移动到另一个 s3

Socket.io将另一个客户端加入房间

再次将客户端ID prestashop保存在另一个表中

当Meteor运行时,如何从另一个客户端访问Meteor的MongoDB?

当Meteor运行时,如何从另一个客户端访问Meteor的MongoDB?

如何托管在另一个内部对齐的FireMonkey表单客户端?

如何在客户端获取另一个网站的html?

如何从另一个脚本导出新的 discord.js 客户端

S3客户端读取配置文件

PHP / JQuery-从另一个客户端向客户端发送数据

AWS S3 createPresignedPost与getSignedUrl。我应该使用哪一个从客户端上传各种文件?

将一个客户端的signalR connectionId公开给另一客户端是否安全?

如果请求从一个应用程序传递到另一个应用程序,如何获取真实的客户端IP地址?

尝试使用 node.js 和 exec + aws cli 将所有文件从一个 S3 存储桶移动到另一个存储桶

如何从另一个客户端或服务器将文本添加到列表中?

如何关闭AWS S3客户端连接

NodeJS如何将数据发送到一个特定的客户端

Swagger-Codegen:如何将所有文件合并为一个文件,以生成客户端代码