gpt4 book ai didi

amazon-web-services - 将大文件从 AWS S3 迁移到 Azure Blob 存储。在 Java 中迁移时还需要监控进度

转载 作者:行者123 更新时间:2023-12-03 04:49:48 25 4
gpt4 key购买 nike

我编写了一段代码,首先从 AWS 下载文件,然后开始上传到 Azure。我还需要监控迁移的全部进度。但这会消耗大量的带宽和时间,而且也无法监控数据。从 s3 到 blob 存储的可靠传输以及迁移监控的最佳方式应该是什么

        //Downloading from AWS

BasicAWSCredentials awsCreds = new BasicAWSCredentials(t.getDaccID(),t.getDaccKey());
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(Regions.fromName("us-east-2"))
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.build();

S3Object s3object = s3Client.getObject(new GetObjectRequest(t.getDbucket(), t.getDfileName()));
byte[] bytes = IOUtils.toByteArray(s3object.getObjectContent());

//Uploading to Azure
String Connstr = "DefaultEndpointsProtocol=https;AccountName="+t.getUaccID()+";AccountKey="+t.getUaccKey()+";EndpointSuffix=core.windows.net";

CloudStorageAccount cloudStorageAccount =CloudStorageAccount.parse(Connstr);
CloudBlobClient blobClient = cloudStorageAccount.createCloudBlobClient();
CloudBlobContainer container=blobClient.getContainerReference(t.getUbucket());
CloudBlockBlob blob = container.getBlockBlobReference(t.getDfileName());
blob.uploadFromByteArray(bytes ,0, bytes.length);
writer.append("File Uploaded to Azure Successful \n");

最佳答案

您实际上不需要从 S3 下载文件并将其上传回 Azure Blob 存储。 Azure Blob 存储支持通过从公开可用的 URL 复制对象来创建新的 Blob。这是一个异步操作,由 Azure 存储本身在服务器端完成。

这是您需要执行的操作(代替代码):

  • 在 AWS S3 中创建对象的签名 URL,或者您可以公开提供该对象。
  • 使用 Azure 存储 Java SDK 通过使用复制 Blob 功能来创建 Blob。在复制操作中,源 URL 将是签名 URL。
  • 复制启动后,您需要定期获取 blob 的属性。在属性中,您将看到Copy Properties,并且您将被告知进度(以百分比和复制的字节数表示)。您可以使用它来监控复制的进度。

我很久以前就写过一篇博客文章(当异步复制 Blob 首次引入时),其中讨论了将对象从 Amazon S3 复制到 Azure Blob 存储。您可以在这里阅读该博客文章:https://gauravmantri.com/2012/06/14/how-to-copy-an-object-from-amazon-s3-to-windows-azure-blob-storage-using-copy-blob/ .

关于amazon-web-services - 将大文件从 AWS S3 迁移到 Azure Blob 存储。在 Java 中迁移时还需要监控进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55204793/

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