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); } }
public static void DownloadFile(AWSArchiveRquest request) { AmazonGlacier client; try { using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USEast1)) { // Setup SNS topic and SQS queue. SetupTopicAndQueue(); RetrieveArchive(client, request); } Console.WriteLine("Operations successful. To continue, press Enter"); } catch (AmazonGlacierException e) { Console.WriteLine(e.Message); } catch (AmazonServiceException e) { Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine(e.Message); } finally { // Delete SNS topic and SQS queue. snsClient.DeleteTopic(new DeleteTopicRequest() { TopicArn = topicArn }); sqsClient.DeleteQueue(new DeleteQueueRequest() { QueueUrl = queueUrl }); } }
private static void SetVaultAccessPolicy(AmazonGlacierClient glacier) { string jsonPolicy = @"{ ""Version"":""2012-10-17"", ""Statement"":[ { ""Sid"": ""glacier-perm"", ""Principal"": ""*"", ""Effect"": ""Allow"", ""Action"": [ ""glacier:*"" ], ""Resource"": [ ""arn:aws:glacier:us-west-2:" + accountId + @":vaults/" + vaultName + @""" ] } ] }"; SetVaultAccessPolicyRequest req = new SetVaultAccessPolicyRequest(); req.VaultName = vaultName; req.Policy = new VaultAccessPolicy(); req.Policy.Policy = jsonPolicy; Task <SetVaultAccessPolicyResponse> res = glacier.SetVaultAccessPolicyAsync(req); Task.WaitAll(res); if (res.IsCompletedSuccessfully) { Console.Write("Set Vault Access Policy on vault {0}", vaultName); } }
internal async Task <string> GetVaultNameAsync(CancellationToken cancellationToken) { using (AmazonGlacierClient client = new AmazonGlacierClient(Amazon.RegionEndpoint.USEast2)) { var request = new DescribeVaultRequest { VaultName = $"{PreferedVaultName}_{_configuration.UniqueClientId}" }; try { var details = await client.DescribeVaultAsync(request, cancellationToken).ConfigureAwait(false); if (!string.IsNullOrEmpty(details.VaultName)) { return(details.VaultName); } using (ArchiveTransferManager manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USEast2)) { manager.CreateVault(request.VaultName); } } catch (Exception e) { _logger.Info(e, $"Vault does not exist. Creating vault '{request.VaultName}' ..."); throw new ConfigurationErrorsException("Cannot create vault", e); } return(request.VaultName); } }
static async Task Main(string[] args) { var client = new AmazonGlacierClient(); var vaultName = "example-vault"; var request = new ListTagsForVaultRequest { // Using a hyphen "=" for the Account Id will // cause the SDK to use the Account Id associated // with the default user. AccountId = "-", VaultName = vaultName, }; var response = await client.ListTagsForVaultAsync(request); if (response.Tags.Count > 0) { foreach (KeyValuePair <string, string> tag in response.Tags) { Console.WriteLine($"Key: {tag.Key}, value: {tag.Value}"); } } else { Console.WriteLine($"{vaultName} has no tags."); } }
private UploadArchiveResponse StoreArchive(Stream uncompressedContent, string archiveDescription) { using ( var glacierClient = new AmazonGlacierClient(new BasicAWSCredentials(GlacierAccessKey, new Secrets().GetGlacierSecretKey()), GlacierRegion)) { // zip to memory stream var ms = new MemoryStream(); var zipper = new GZipStream(ms, CompressionLevel.Optimal); uncompressedContent.CopyTo(zipper); ms.Seek(0, SeekOrigin.Begin); //calculate sha256 hash var shaTree = TreeHashGenerator.CalculateTreeHash(ms); ms.Seek(0, SeekOrigin.Begin); var result = glacierClient.UploadArchive(new UploadArchiveRequest() { AccountId = GlacierOwnerAccountID, VaultName = GlacierVaultName, ArchiveDescription = archiveDescription, Body = ms, Checksum = shaTree, }); return(result); } }
public void VaultLowLevel() { try { using (var client = new AmazonGlacierClient( settings.AWSAccessKeyID, settings.AWSSecretAccessKey, RegionEndpoint.GetBySystemName(settings.AWSS3Region.SystemName))) { Debug.WriteLine("Setup SNS topic and SQS queue."); SetupTopicAndQueue(); Debug.WriteLine("Retrieve Inventory List"); GetVaultInventory(client); } Debug.WriteLine("Operations successful."); } catch (AmazonGlacierException e) { Debug.WriteLine(e.Message); } catch (AmazonServiceException e) { Debug.WriteLine(e.Message); } catch (Exception e) { Debug.WriteLine(e.Message); } finally { // Delete SNS topic and SQS queue. snsClient.DeleteTopic(new DeleteTopicRequest() { TopicArn = this.topicArn }); sqsClient.DeleteQueue(new DeleteQueueRequest() { QueueUrl = this.queueUrl }); } }
static async Task Main(string[] args) { var client = new AmazonGlacierClient(); var vaultName = "example-vault"; var request = new ListJobsRequest { // Using a hyphen "=" for the Account Id will // cause the SDK to use the Account Id associated // with the default user. AccountId = "-", VaultName = vaultName, }; var response = await client.ListJobsAsync(request); if (response.JobList.Count > 0) { response.JobList.ForEach(job => { Console.WriteLine($"{job.CreationDate} {job.JobDescription}"); }); } else { Console.WriteLine($"No jobs were found for {vaultName}."); } }
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"); }
// Uploads each part to AWS static List <string> UploadParts(string uploadID, AmazonGlacierClient client, string archiveToUpload) { List <string> partChecksumList = new List <string>(); long currentPosition = 0; var buffer = new byte[Convert.ToInt32(partSize)]; long fileLength = new FileInfo(archiveToUpload).Length; using (FileStream fileToUpload = new FileStream(archiveToUpload, FileMode.Open, FileAccess.Read)) { while (fileToUpload.Position < fileLength) { Stream uploadPartStream = GlacierUtils.CreatePartStream(fileToUpload, partSize); string checksum = TreeHashGenerator.CalculateTreeHash(uploadPartStream); partChecksumList.Add(checksum); UploadMultipartPartRequest uploadMPUrequest = new UploadMultipartPartRequest() { VaultName = vaultName, Body = uploadPartStream, Checksum = checksum, UploadId = uploadID }; uploadMPUrequest.SetRange(currentPosition, currentPosition + uploadPartStream.Length - 1); client.UploadMultipartPart(uploadMPUrequest); currentPosition = currentPosition + uploadPartStream.Length; } } return(partChecksumList); }
public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonGlacierConfig config = new AmazonGlacierConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonGlacierClient client = new AmazonGlacierClient(creds, config); ListMultipartUploadsResponse resp = new ListMultipartUploadsResponse(); do { ListMultipartUploadsRequest req = new ListMultipartUploadsRequest { Limit = maxItems }; resp = client.ListMultipartUploads(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.UploadsList) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.Marker)); }
static void Main(string[] args) { // note: this constructor relies on you having set up a credential profile // named 'default', or have set credentials in environment variables // AWS_ACCESS_KEY_ID & AWS_SECRET_ACCESS_KEY, or have an application settings // file. See https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html // for more details and other using (var glacier = new AmazonGlacierClient(RegionEndpoint.USWest2)) { CreateVault(glacier); SetVaultAccessPolicy(glacier); AddTagsToVault(glacier); ListVaults(glacier); GetVaultAccessPolicy(glacier); var archiveId = UploadArchive(glacier); DeleteArchive(glacier, archiveId); // see important note above RequestVaultInventory(glacier); // see important note above DeleteVault(glacier); } Console.WriteLine("Glacier sample complete. Press any key to exit."); Console.ReadKey(); }
public void GetVaultsList() { string lastMarker = null; var settings = SettingsManager.GetSettings(); DescribeVaultRequest describeVaultRequest = new DescribeVaultRequest() { VaultName = settings.AWSGlacierVault }; var client = new AmazonGlacierClient( settings.AWSAccessKeyID, settings.AWSSecretAccessKey, RegionEndpoint.GetBySystemName(settings.AWSS3Region.SystemName)); do { ListVaultsRequest request = new ListVaultsRequest() { Marker = lastMarker }; ListVaultsResponse response = client.ListVaults(request); foreach (DescribeVaultOutput output in response.VaultList) { Debug.WriteLine("Vault Name: {0} \tCreation Date: {1} \t #of archives: {2}", output.VaultName, output.CreationDate, output.NumberOfArchives); } lastMarker = response.Marker; } while (lastMarker != null); }
public static void DownloadGlacierJobOutput( string jobId, AmazonGlacierClient client, string vaultName, string filePath) { try { var getJobOutputRequest = new GetJobOutputRequest { JobId = jobId, VaultName = vaultName }; var getJobOutputResponse = client.GetJobOutput(getJobOutputRequest); using (Stream webStream = getJobOutputResponse.Body) { using (Stream fileToSave = File.Create(filePath)) { CopyStream(webStream, fileToSave); } } } catch (Exception ex) { Debug.WriteLine(ex.Message); throw ex; } }
private static string UploadArchive(AmazonGlacierClient glacier) { MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes("data to archive")); string treeHash = TreeHashGenerator.CalculateTreeHash(ms); UploadArchiveRequest req = new UploadArchiveRequest(); req.VaultName = vaultName; req.Body = ms; req.Checksum = treeHash; Task <UploadArchiveResponse> res = glacier.UploadArchiveAsync(req); Task.WaitAll(res); if (res.IsCompletedSuccessfully) { Console.WriteLine("ArchiveId: {0}", res.Result.ArchiveId); return(res.Result.ArchiveId); } else { return(string.Empty); } }
public GlacierGateway(GlacierParameters parameters) { _accessKeyId = parameters.AccessKeyId; _secretAccessKey = parameters.SecretAccessKey; _accountId = parameters.AccountId ?? "-"; _region = parameters.GetRegion(); _vaultName = parameters.VaultName; _glacierClient = new AmazonGlacierClient(_accessKeyId, _secretAccessKey, _region); _transferManager = new ArchiveTransferManager(_accessKeyId, _secretAccessKey, _region); }
public Glacier(string vault, string rootPath, string accessKeyId, string accessSecretKey, RegionEndpoint region) { Vault = vault; RootPath = rootPath; AccessKeyId = accessKeyId; AccessSecretKey = accessSecretKey; Region = region; rootFolder = new GlacierFile(this, "", true, "", true); client = new AmazonGlacierClient(accessKeyId, accessSecretKey, region); }
public RavenAwsGlacierClient(GlacierSettings glacierSettings, Config.Categories.BackupConfiguration configuration, Progress progress = null, CancellationToken cancellationToken = default) { if (glacierSettings == null) { throw new ArgumentNullException(nameof(glacierSettings)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } if (string.IsNullOrWhiteSpace(glacierSettings.AwsAccessKey)) { throw new ArgumentException("AWS Access Key cannot be null or empty"); } if (string.IsNullOrWhiteSpace(glacierSettings.AwsSecretKey)) { throw new ArgumentException("AWS Secret Key cannot be null or empty"); } if (string.IsNullOrWhiteSpace(glacierSettings.VaultName)) { throw new ArgumentException("AWS Vault Name cannot be null or empty"); } if (string.IsNullOrWhiteSpace(glacierSettings.AwsRegionName)) { throw new ArgumentException("AWS Region Name cannot be null or empty"); } var region = RegionEndpoint.GetBySystemName(glacierSettings.AwsRegionName); AWSCredentials credentials; if (string.IsNullOrWhiteSpace(glacierSettings.AwsSessionToken)) { credentials = new BasicAWSCredentials(glacierSettings.AwsAccessKey, glacierSettings.AwsSecretKey); } else { credentials = new SessionAWSCredentials(glacierSettings.AwsAccessKey, glacierSettings.AwsSecretKey, glacierSettings.AwsSessionToken); } _client = new AmazonGlacierClient(credentials, new AmazonGlacierConfig { RegionEndpoint = region, Timeout = configuration.CloudStorageOperationTimeout.AsTimeSpan }); _region = glacierSettings.AwsRegionName; _vaultName = glacierSettings.VaultName; _progress = progress; _cancellationToken = cancellationToken; }
private static bool DeleteVault(string vaultName) { using (IAmazonGlacier client = new AmazonGlacierClient(RegionEndpoint.EUWest1)) { DeleteVaultRequest request = new DeleteVaultRequest() { VaultName = vaultName }; DeleteVaultResponse response = client.DeleteVault(request); return(response.HttpStatusCode == System.Net.HttpStatusCode.NoContent); } }
// Grabs the Upload ID to pass into the UploadParts method static string InitiateMultipartUpload(AmazonGlacierClient client, string vaultName) { InitiateMultipartUploadRequest initiateMPUrequest = new InitiateMultipartUploadRequest() { VaultName = vaultName, PartSize = partSize, ArchiveDescription = ArchiveDescription }; InitiateMultipartUploadResponse initiateMPUresponse = client.InitiateMultipartUpload(initiateMPUrequest); return(initiateMPUresponse.UploadId); }
private static List <GlacierJobDescription> ListInventory(string vaultName) { using (IAmazonGlacier client = new AmazonGlacierClient(RegionEndpoint.EUWest1)) { ListJobsRequest request = new ListJobsRequest() { VaultName = vaultName }; ListJobsResponse response = client.ListJobs(request); return(response.JobList); } }
private static bool IsInventoryReady(string jobId, string vaultName) { using (IAmazonGlacier client = new AmazonGlacierClient(RegionEndpoint.EUWest1)) { DescribeJobRequest request = new DescribeJobRequest() { JobId = jobId, VaultName = vaultName }; DescribeJobResponse response = client.DescribeJob(request); return(response.Completed); } }
public void GlacierDeleteVaultAccessPolicy() { #region to-delete-the-vault-access-policy-1481840424677 var client = new AmazonGlacierClient(); var response = client.DeleteVaultAccessPolicy(new DeleteVaultAccessPolicyRequest { AccountId = "-", VaultName = "examplevault" }); #endregion }
public void GlacierDeleteVaultNotifications() { #region to-delete-the-notification-configuration-set-for-a-vault-1481840646090 var client = new AmazonGlacierClient(); var response = client.DeleteVaultNotifications(new DeleteVaultNotificationsRequest { AccountId = "-", VaultName = "examplevault" }); #endregion }
public void GlacierGetDataRetrievalPolicy() { #region to-get-the-current-data-retrieval-policy-for-the-account-1481851580439 var client = new AmazonGlacierClient(); var response = client.GetDataRetrievalPolicy(new GetDataRetrievalPolicyRequest { AccountId = "-" }); DataRetrievalPolicy policy = response.Policy; #endregion }
public void GlacierAbortVaultLock() { #region to-abort-a-vault-lock-1481839357947 var client = new AmazonGlacierClient(); var response = client.AbortVaultLock(new AbortVaultLockRequest { AccountId = "-", VaultName = "examplevault" }); #endregion }
protected IAmazonGlacier CreateClient(AWSCredentials credentials, RegionEndpoint region) { var config = new AmazonGlacierConfig { RegionEndpoint = region }; Amazon.PowerShell.Utils.Common.PopulateConfig(this, config); this.CustomizeClientConfig(config); var client = new AmazonGlacierClient(credentials, config); client.BeforeRequestEvent += RequestEventHandler; client.AfterResponseEvent += ResponseEventHandler; return(client); }
public void GlacierListProvisionedCapacity() { #region to-list-the-provisioned-capacity-units-for-an-account-1481923656130 var client = new AmazonGlacierClient(); var response = client.ListProvisionedCapacity(new ListProvisionedCapacityRequest { AccountId = "-" }); List <ProvisionedCapacityDescription> provisionedCapacityList = response.ProvisionedCapacityList; #endregion }
public void GlacierPurchaseProvisionedCapacity() { #region to-purchases-a-provisioned-capacity-unit-for-an-aws-account-1481927446662 var client = new AmazonGlacierClient(); var response = client.PurchaseProvisionedCapacity(new PurchaseProvisionedCapacityRequest { AccountId = "-" }); string capacityId = response.CapacityId; #endregion }
public void GlacierDeleteVault() { #region 7f7f000b-4bdb-40d2-91e6-7c902f60f60f var client = new AmazonGlacierClient(); var response = client.DeleteVault(new DeleteVaultRequest { AccountId = "-", VaultName = "my-vault" }); #endregion }