コード例 #1
0
        public async Task BulkMoveItems()
        {
            // ARRANGE
            string bucket = sourceBucket;
            //string bucket = "mhaken-9fc61dff-1893-42cc-a82f-8024960b158e";

            Stopwatch sw    = new Stopwatch();
            int       count = 10000;

            try
            {
                sw.Start();

                await CreateAndFillBucket(count);

                sw.Stop();

                Debug.Print($"Finished creating and filling bucket {bucket} in {sw.Elapsed}.");

                sw.Reset();

                ListObjectsV2Request list = new ListObjectsV2Request()
                {
                    BucketName = bucket
                };

                sw.Start();

                IEnumerable <S3Object> objects = (await client.ListAllObjectsAsync(list)).SelectMany(x => x.S3Objects);

                // ACT
                BulkMoveRequest request = new BulkMoveRequest(objects.Select(x => new CopyObjectRequest()
                {
                    SourceBucket      = x.BucketName,
                    DestinationBucket = x.BucketName,
                    SourceKey         = x.Key,
                    DestinationKey    = "moved_" + x.Key,
                    StorageClass      = S3StorageClass.OneZoneInfrequentAccess,
                }))
                {
                    PreferMultipart = true
                };


                BulkCopyResponse response = await client.BulkMoveAsync(request);

                sw.Stop();

                File.WriteAllText("results.txt", $"Successfully moved {count} items in {sw.Elapsed}.");

                // ASSERT
                Assert.Equal(objects.Count(), response.SuccessfulOperations.Count);
            }
            catch (Exception e)
            {
            }
            finally
            {
                await client.EmptyBucketAsync(bucket);

                await client.DeleteBucketAsync(bucket);
            }
        }