Перенесите большой файл из AWS S3 в Azure BlobStorage. Также необходимо следить за прогрессом во время миграции в Java - PullRequest
0 голосов
/ 17 марта 2019

Я написал код, который сначала загружает файл из AWS, а затем начинает загрузку в Azure.Мне также нужно следить за полным прогрессом миграции.Но это потребляет много пропускной способности и времени, а также не контролирует данные.Каким должен быть лучший способ сделать надежный переход с s3 на blobstorage вместе с мониторингом миграции

        //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");

1 Ответ

3 голосов
/ 17 марта 2019

Вам не нужно загружать файл с S3 и загружать его обратно в хранилище BLOB-объектов Azure.Хранилище больших двоичных объектов Azure поддерживает создание новых больших двоичных объектов путем копирования объектов из общедоступного URL-адреса.Это асинхронная операция, которая выполняется на стороне сервера самим хранилищем Azure.

Вот что вам нужно сделать (вместо кода):

  • СоздатьSigned URL объекта в AWS S3 или вы можете сделать объект общедоступным.
  • Используйте Java SDK хранилища Azure для создания большого двоичного объекта с использованием функциональности Copy Blob.В операции копирования исходным URL-адресом будет подписанный URL-адрес.
  • После начала копирования вам потребуется периодически извлекать свойства большого двоичного объекта.В свойствах вы увидите Copy Properties и там вам сообщат о прогрессе (как в процентах, так и в байтах).Вы можете использовать это для отслеживания хода выполнения копирования.

Я написал сообщение в блоге давно (когда впервые было представлено асинхронное копирование большого двоичного объекта), в котором говорится о копировании объектов из Amazon S3 в хранилище BLOB-объектов Azure.,Вы можете прочитать этот блог здесь: https://gauravmantri.com/2012/06/14/how-to-copy-an-object-from-amazon-s3-to-windows-azure-blob-storage-using-copy-blob/.

...