コード例 #1
0
        static void RequestVaultInventory(IAmazonGlacier glacier)
        {
            // This sample method forces Glacier to start inventorying the new vault
            // created by the sample. Glacier's default behavior is to inventory a
            // vault once every 24 hours. Vaults cannot be deleted unless (1) they
            // are empty and (2) there has been no write activity since the last
            // inventory. By requesting an inventory ahead of schedule, it allows
            // you the user to delete the sample vault created by this code earlier.
            // Note that it can take Glacier a few hours to finish inventory processing.

            var req = new InitiateJobRequest
            {
                VaultName     = VaultName,
                JobParameters = new JobParameters
                {
                    Type = "inventory-retrieval"
                }
            };

            Task <InitiateJobResponse> res = glacier.InitiateJobAsync(req);

            Task.WaitAll(res);

            if (res.IsCompletedSuccessfully)
            {
                Console.WriteLine($"Inventory job for vault {VaultName} has been queued. On completion you may delete the vault assuming no further write activity takes place.");
            }
        }
コード例 #2
0
        private static void HandleInventory(string[] args)
        {
            var region = RegionEndpoint.EnumerableAllRegions.SingleOrDefault(reg => reg.SystemName == args[2]);

            if (args.Length < 5 || region == null)
            {
                Console.WriteLine($"args should be aws_key aws_secret region vault_name output_filename");
                return;
            }
            var aws_key    = args[0];
            var aws_secret = args[1];
            var vault_name = args[3];
            var filename   = args[4];
            var creds      = new BasicAWSCredentials(aws_key, aws_secret);
            var config     = new AmazonGlacierConfig
            {
                RegionEndpoint = region,
                Timeout        = TimeSpan.FromDays(10)
            };
            var client  = new AmazonGlacierClient(creds, config);
            var initReq = new InitiateJobRequest(vault_name, new JobParameters("JSON", "inventory-retrieval", null, null));
            var promise = client.InitiateJobAsync(initReq);

            promise.ContinueWith(job =>
            {
                Console.WriteLine($"Job ID: {job.Result.JobId}");
                File.WriteAllText(filename, job.Result.JobId);
            });
            Console.WriteLine("Retrieval job initiated");
        }
コード例 #3
0
        internal InitiateJobResponse InitiateJob(InitiateJobRequest request)
        {
            var marshaller   = new InitiateJobRequestMarshaller();
            var unmarshaller = InitiateJobResponseUnmarshaller.Instance;

            return(Invoke <InitiateJobRequest, InitiateJobResponse>(request, marshaller, unmarshaller));
        }
コード例 #4
0
ファイル: FileManager.cs プロジェクト: rmccomb/Backup
        private static void InitiateGlacierJob(Topic topic)
        {
            // Make the call to AWS Glacier to get inventory
            var settings = SettingsManager.GetSettings();

            using (var client = new AmazonGlacierClient(
                       settings.AWSAccessKeyID,
                       settings.AWSSecretAccessKey,
                       RegionEndpoint.GetBySystemName(settings.AWSGlacierRegion.SystemName)))
            {
                var initJobRequest = new InitiateJobRequest
                {
                    VaultName     = settings.AWSGlacierVault,
                    JobParameters = new JobParameters
                    {
                        Type        = topic.Type,
                        Description = topic.Description,
                        ArchiveId   = topic.ArchiveId,
                        SNSTopic    = topic.TopicARN,
                    }
                };

                var initJobResponse = client.InitiateJob(initJobRequest);
                topic.JobId         = initJobResponse.JobId;
                topic.Status        = GlacierResult.JobRequested;
                topic.DateRequested = DateTime.Now;
                SaveTopicFile(topic);
            }
        }
コード例 #5
0
        /// <summary>
        /// Initiates the asynchronous execution of the InitiateJob operation.
        /// <seealso cref="Amazon.Glacier.IAmazonGlacier"/>
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the InitiateJob operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        public Task <InitiateJobResponse> InitiateJobAsync(InitiateJobRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new InitiateJobRequestMarshaller();
            var unmarshaller = InitiateJobResponseUnmarshaller.Instance;

            return(InvokeAsync <InitiateJobRequest, InitiateJobResponse>(request, marshaller,
                                                                         unmarshaller, cancellationToken));
        }
コード例 #6
0
ファイル: Glacier.cs プロジェクト: fiftin/oblqo
        public async Task <string> InitiateDownloadingInventoryAsync(CancellationToken token)
        {
            var req = new InitiateJobRequest()
            {
                VaultName     = Vault,
                JobParameters = new JobParameters()
                {
                    Type = "inventory-retrieval"
                }
            };
            var res = await client.InitiateJobAsync(req);

            return(res.JobId);
        }
コード例 #7
0
        public string InitiateVaultInventoryRequest()
        {
            InitiateJobRequest inventoryRequest = new InitiateJobRequest()
            {
                VaultName     = _vault,
                JobParameters = new JobParameters()
                {
                    Type = "inventory-retrieval"
                }
            };

            InitiateJobResponse response = _amazonGlacierClient.InitiateJob(inventoryRequest);

            return(response.InitiateJobResult.JobId);
        }
コード例 #8
0
        public string RequestDownload(string id)
        {
            var jobRequest = new InitiateJobRequest()
            {
                VaultName     = this.VaultName,
                JobParameters = new JobParameters()
                {
                    Type      = "archive-retrieval",
                    ArchiveId = id
                }
            };

            var jobResponse = Service.InitiateJob(jobRequest);

            return(jobResponse.JobId);
        }
コード例 #9
0
        public string InitiateDownloadRequest(string archiveId, string snsTopic = "")
        {
            InitiateJobRequest initDownloadRequest = new InitiateJobRequest()
            {
                VaultName     = _vault,
                JobParameters = new JobParameters()
                {
                    Type      = "archive-retrieval",
                    ArchiveId = archiveId
                }
            };

            InitiateJobResponse response = _amazonGlacierClient.InitiateJob(initDownloadRequest);

            return(response.InitiateJobResult.JobId);
        }
コード例 #10
0
ファイル: GlacierController.cs プロジェクト: TimGeGe/s3image
        public async Task <IActionResult> StartInventory()
        {
            InitiateJobRequest request = new InitiateJobRequest
            {
                VaultName     = S3Settings.VaultName,
                JobParameters = new JobParameters
                {
                    Type   = "inventory-retrieval",
                    Format = "JSON"
                }
            };

            InitiateJobResponse response = await GlacierClient.InitiateJobAsync(request);

            return(Ok(response.JobId));
        }
コード例 #11
0
ファイル: GlacierController.cs プロジェクト: TimGeGe/s3image
        public async Task <IActionResult> StartArchiveRetrieval(string archiveId)
        {
            InitiateJobRequest request = new InitiateJobRequest
            {
                VaultName     = S3Settings.VaultName,
                JobParameters = new JobParameters
                {
                    Type      = "archive-retrieval",
                    ArchiveId = archiveId
                }
            };

            InitiateJobResponse response = await GlacierClient.InitiateJobAsync(request);

            return(Ok(response.JobId));
        }
コード例 #12
0
 private static string RequestInventory(string vaultName)
 {
     using (IAmazonGlacier client = new AmazonGlacierClient(RegionEndpoint.EUWest1))
     {
         InitiateJobRequest initJobRequest = new InitiateJobRequest()
         {
             VaultName     = vaultName,
             JobParameters = new JobParameters()
             {
                 Type   = "inventory-retrieval",
                 Format = "CSV"
             }
         };
         InitiateJobResponse initJobResponse = client.InitiateJob(initJobRequest);
         return(initJobResponse.JobId);
     }
 }
コード例 #13
0
ファイル: Glacier.cs プロジェクト: fiftin/oblqo
        public override async Task DownloadFileAsync(StorageFile file, Stream output, CancellationToken token, Action <TransferProgress> progressCallback)
        {
            if (file.IsFolder)
            {
                throw new NotSupportedException("Glacier is not supported directories");
            }
            string jobId;

            if (((GlacierFile)file).JobId == null)
            {
                var initReq = new InitiateJobRequest(Vault, new JobParameters {
                    ArchiveId = file.Id, Type = "archive-retrieval"
                });
                var initResult = await client.InitiateJobAsync(initReq, token);

                jobId = initResult.JobId;
                ((GlacierFile)file).JobId = jobId;
            }
            else
            {
                jobId = ((GlacierFile)file).JobId;
            }
            var describeReq    = new DescribeJobRequest(Vault, jobId);
            var describeResult = await client.DescribeJobAsync(describeReq, token);

            var ok = false;

            while (!ok) // while job incompleted
            {
                if (describeResult.Completed)
                {
                    ok = true;
                }
                else
                {
                    await Task.Delay(Timeout, token);

                    describeResult = await client.DescribeJobAsync(describeReq, token);
                }
            }
            var req    = new GetJobOutputRequest(Vault, jobId, null);
            var result = await client.GetJobOutputAsync(req, token);

            await Common.CopyStreamAsync(result.Body, output, null, result.ContentLength);
        }
コード例 #14
0
        string initiateJob()
        {
            var request = new InitiateJobRequest()
            {
                AccountId = this.options.AccountId,
                VaultName = this.vaultName,
                JobParameters = new JobParameters()
                {
                    ArchiveId = this.archiveId,
                    SNSTopic = topicArn,
                    Type = "archive-retrieval"
                }
            };
            ((Amazon.Runtime.Internal.IAmazonWebServiceRequest)request).AddBeforeRequestHandler(new ArchiveTransferManager.UserAgentPostFix("DownloadArchive").UserAgentRequestEventHandlerSync);

            var response = this.manager.GlacierClient.InitiateJob(request);
            return response.JobId;
        }
コード例 #15
0
        static string GetVaultInventoryJobId(string vaultName, AmazonGlacierClient client)
        {
            // Initiate job.
            InitiateJobRequest initJobRequest = new InitiateJobRequest()
            {
                VaultName     = vaultName,
                JobParameters = new JobParameters()
                {
                    Type        = "inventory-retrieval",
                    Description = DateTime.Now.ToString() + ": This job is to download a vault inventory.",
                    SNSTopic    = topicArn,
                }
            };

            InitiateJobResponse initJobResponse = client.InitiateJob(initJobRequest);
            string jobId = initJobResponse.JobId;

            return(jobId);
        }
コード例 #16
0
        static void RetrieveArchive(AmazonGlacier client, AWSArchiveRquest request)
        {
            // Initiate job.
            InitiateJobRequest initJobRequest = new InitiateJobRequest()
            {
                VaultName     = vaultName,
                JobParameters = new JobParameters()
                {
                    Type        = "archive-retrieval",
                    ArchiveId   = request.ArchiveID,
                    Description = "This job is to download archive updated as part of getting started",
                    SNSTopic    = topicArn,
                }
            };
            InitiateJobResponse initJobResponse = client.InitiateJob(initJobRequest);
            string jobId = initJobResponse.InitiateJobResult.JobId;

            // Check queue for a message and if job completed successfully, download archive.
            ProcessQueue(jobId, client, request);
        }
コード例 #17
0
ファイル: AWSVaultLowLevel.cs プロジェクト: rmccomb/Backup
            void GetVaultInventory(AmazonGlacierClient client)
            {
                // Initiate job.
                var initJobRequest = new InitiateJobRequest()
                {
                    VaultName     = vaultName,
                    JobParameters = new JobParameters()
                    {
                        Type        = "inventory-retrieval",
                        Description = "This job is to download a vault inventory.",
                        SNSTopic    = topicArn,
                    }
                };

                var    initJobResponse = client.InitiateJob(initJobRequest);
                string jobId           = initJobResponse.JobId;

                // Check queue for a message and if job completed successfully, download inventory.
                ProcessQueue(jobId, client);
            }
コード例 #18
0
        string initiateJob()
        {
            var request = new InitiateJobRequest()
            {
                AccountId     = this.options.AccountId,
                VaultName     = this.vaultName,
                JobParameters = new JobParameters()
                {
                    ArchiveId = this.archiveId,
                    SNSTopic  = topicArn,
                    Type      = "archive-retrieval"
                }
            };

            request.BeforeRequestEvent += new UserAgentPostFix("DownloadArchive").UserAgentRequestEventHandlerSync;

            var response = this.manager.GlacierClient.InitiateJob(request);

            return(response.InitiateJobResult.JobId);
        }
コード例 #19
0
        /// <summary>
        /// This method initiates an archive retieval job for the specified archive and returns back the job id.
        /// Once the is complete
        /// </summary>
        /// <param name="vaultName">The name of the vault that contains the archive to initiate the job for.</param>
        /// <param name="archiveId">The archive id that the download job will retrieve.</param>
        /// <param name="options">Additional options that can be used for initiating archive retrieval.</param>
        /// <returns>The job id for the initiated job.</returns>
        public string InitiateArchiveRetrievalJob(string vaultName, string archiveId, InitiateArchiveRetrievalOptions options)
        {
            InitiateJobRequest jobRequest = new InitiateJobRequest()
            {
                VaultName     = vaultName,
                JobParameters = new JobParameters()
                {
                    ArchiveId = archiveId,
                    Type      = "archive-retrieval"
                }
            };

            if (options != null)
            {
                jobRequest.AccountId = options.AccountId;
                jobRequest.JobParameters.SNSTopic = options.SNSTopic;
            }

            var jobId = glacierClient.InitiateJob(jobRequest).JobId;

            return(jobId);
        }
コード例 #20
0
        /// <summary>
        /// This method initiates an archive retieval job for the specified archive and returns back the job id.
        /// Once the job is complete
        /// </summary>
        /// <param name="vaultName">The name of the vault that contains the archive to initiate the job for.</param>
        /// <param name="archiveId">The archive id that the download job will retrieve.</param>
        /// <param name="options">Additional options that can be used for initiating archive retrieval.</param>
        /// <returns>The job id for the initiated job.</returns>
        public async Task <string> InitiateArchiveRetrievalJobAsync(string vaultName, string archiveId, InitiateArchiveRetrievalOptions options)
        {
            InitiateJobRequest jobRequest = new InitiateJobRequest()
            {
                VaultName     = vaultName,
                JobParameters = new JobParameters()
                {
                    ArchiveId = archiveId,
                    Type      = "archive-retrieval"
                }
            };

            if (options != null)
            {
                jobRequest.AccountId = options.AccountId;
                jobRequest.JobParameters.SNSTopic = options.SNSTopic;
            }

            var glacierClientTask = await glacierClient.InitiateJobAsync(jobRequest).ConfigureAwait(false);

            return(glacierClientTask.JobId);
        }
コード例 #21
0
        public void Execute()
        {
            var initJobRequest = new InitiateJobRequest
            {
                VaultName = "backup-home",

                JobParameters = new JobParameters
                {
                    Type = "inventory-retrieval"
                }
            };

            using (AmazonGlacierClient client = new AmazonGlacierClient(RegionEndpoint.USWest2))
            {
                InitiateJobResponse initJobResponse = client.InitiateJob(initJobRequest);

                string jobId = initJobResponse.JobId;

                ConsoleView.Show("Inventory requested");
                ConsoleView.Show(string.Format("JobId: [{0}]", jobId));
            }
        }